国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

mysql - 這個查詢需求,表設計要不要冗余

瀏覽:92日期:2022-06-16 08:35:43

問題描述

數據來源:每天記錄一次電表的歷史用電總量。

查詢需求:最近1天、2天、10天、15天、30天、...、若干天 的用電量統(tǒng)計。

實現方法:方法1:在select中嵌套N個子查詢:select (xx)1天, (xx)2天, (xx)10天, ... , (xx)100天 from table方法2:每天在記錄歷史用電總量的同時,計算出N個時間段內的用電量,冗余寫在表里。是否有其它更好方法?

謝謝偉大的segmentfault網友。

問題解答

回答1:

每天凌晨執(zhí)行一遍方法1的sql語句,存進redis中,然后數據查詢都去查redis。

回答2:

mysql有個定時任務 event ,可以嘗試了解下

DROP EVENT IF EXISTS e_xxxx;DELIMITER //CREATE EVENT IF NOT EXISTS e_xxxxON SCHEDULE EVERY 1 DAY STARTS ’2016-01-15 23:59:59’ON COMPLETION PRESERVEDOBEGIN #--TODO 這里可以寫一個存儲過程 調用就好了 CALL p_xxxxxxxxx();END//DELIMITER ;回答3:

上面兩位的建議都是先做預統(tǒng)計,但有沒想過,這預統(tǒng)計是每天都要執(zhí)行,但你查詢的時候可能就某一天,而且也就查詢前n天的數據,也就是你最多需要遍歷n條的數據,mysql的這點性能還是有的。你只需要的是每天凌晨統(tǒng)計出前一天的用電量(不是總電量),查詢的時候相當于只要把時間以內的總電量依次累加起來就好。說明下,查詢的電量表A中得含有統(tǒng)計的日期cur_date,統(tǒng)計當天的用電量cur_elect。(cur_date加個索引效果更佳)

select sum(if(cur_date>=DATE_ADD(CURDATE(),INTERVAL -1 DAY),cur_elect,0)) as 最近1天, sum(if(cur_date>=DATE_ADD(CURDATE(),INTERVAL -2 DAY),cur_elect,0)) as 最近2天, ... sum(if(cur_date>=DATE_ADD(CURDATE(),INTERVAL -N DAY),cur_elect,0)) as 最近N天, from A where cur_date>=DATE_ADD(CURDATE(),INTERVAL -N DAY)

N為查詢最近天數最大值更或者直接傳到后臺去,循環(huán)遍歷,畢竟統(tǒng)計完前m-n天,前m天可以利用前m-n天的數據

主站蜘蛛池模板: 成年女人午夜免费视频 | 欧美日韩国产一区二区三区播放 | 国产精品2020观看久久 | 亚洲毛片免费在线观看 | 久久成人毛片 | 最新毛片久热97免费精品视频 | 国产成人偷拍 | 九月婷婷亚洲综合在线 | 天天插夜夜爽 | 国产三级a三级三级三级 | 爽爽日本在线视频免费 | 亚洲欧美国产高清va在线播放 | 国产免费久久精品久久久 | 亚洲国产剧情在线精品视 | 免费看成人www的网站软件 | 亚洲欧美国产日韩天堂在线视 | 日韩特级毛片 | 长腿校花被啪到腿软视频 | 欧美日产国产亚洲综合图区一 | 成年人午夜免费视频 | 欧美成人性色xxxx视频 | 久久国产精品一国产精品 | 久草在线看片 | 国产中文字幕在线免费观看 | 久久伊人男人的天堂网站 | 免费一级美国片在线观看 | 自拍三级| 色综合91久久精品中文字幕 | 国产va精品网站精品网站精品 | 国产成人黄网在线免 | 99在线观看巨臀大臀视频 | 一级做a| 日本巨乳中文字幕 | 亚洲天堂视频网 | 中文字幕免费观看 | 一区二区三区在线观看视频 | 亚洲精品精品 | 99久久国产免费 - 99久久国产免费 | 欧美国产日韩在线播放 | 欧美一区精品二区三区 | 久久国产视频网站 |