搜尋

首頁  >  問答  >  主體

php - mysql查詢最佳化問題?

select count(*) as aggregate from `call_records` where (`CallType` = 'dialout' and `CalledNo` = '12345678910');

這條查詢如何優化?前提是不能建立索引,因為這張表裡面已經有好幾個索引了,有可能導致鎖定表。

大家讲道理大家讲道理2749 天前505

全部回覆(2)我來回復

  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:10:33

    是不是熱數據,不是熱數據就搞個腳本定時跑把統計的count存到另一個張統計表裡去。
    熱資料的話你看看之前建的索引能不能搞成組合索引,因為B樹從左開始,你建個(a,b,c)的,a和a,b和a,b,c都能用了,程式碼層的查詢函數注意欄位順序。

    回覆
    0
  • PHPz

    PHPz2017-05-16 13:10:33

    把索引重新優化下吧,單一索引建的太多了,就想辦法建個聯合索引。假如這個統計不需要即時性,就用md5(sql語句)當key,把結果當作值,存放到快取裡(redis)。

    回覆
    0
  • 取消回覆