84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
select count(*) as aggregate from `call_records` where (`CallType` = 'dialout' and `CalledNo` = '12345678910');
這條查詢如何優化?前提是不能建立索引,因為這張表裡面已經有好幾個索引了,有可能導致鎖定表。
光阴似箭催人老,日月如移越少年。
是不是熱數據,不是熱數據就搞個腳本定時跑把統計的count存到另一個張統計表裡去。 熱資料的話你看看之前建的索引能不能搞成組合索引,因為B樹從左開始,你建個(a,b,c)的,a和a,b和a,b,c都能用了,程式碼層的查詢函數注意欄位順序。
把索引重新優化下吧,單一索引建的太多了,就想辦法建個聯合索引。假如這個統計不需要即時性,就用md5(sql語句)當key,把結果當作值,存放到快取裡(redis)。
是不是熱數據,不是熱數據就搞個腳本定時跑把統計的count存到另一個張統計表裡去。
熱資料的話你看看之前建的索引能不能搞成組合索引,因為B樹從左開始,你建個(a,b,c)的,a和a,b和a,b,c都能用了,程式碼層的查詢函數注意欄位順序。
把索引重新優化下吧,單一索引建的太多了,就想辦法建個聯合索引。假如這個統計不需要即時性,就用md5(sql語句)當key,把結果當作值,存放到快取裡(redis)。