select count(*) as aggregate from `call_records` where (`CallType` = 'dialout' and `CalledNo` = '12345678910');
這條查詢如何優化?前提是不能建立索引,因為這張表裡面已經有好幾個索引了,有可能導致鎖定表。
给我你的怀抱2017-05-16 13:10:33
是不是熱數據,不是熱數據就搞個腳本定時跑把統計的count存到另一個張統計表裡去。
熱資料的話你看看之前建的索引能不能搞成組合索引,因為B樹從左開始,你建個(a,b,c)的,a和a,b和a,b,c都能用了,程式碼層的查詢函數注意欄位順序。
PHPz2017-05-16 13:10:33
把索引重新優化下吧,單一索引建的太多了,就想辦法建個聯合索引。假如這個統計不需要即時性,就用md5(sql語句)當key,把結果當作值,存放到快取裡(redis)。