搜尋

首頁  >  問答  >  主體

mysql - sql語句最佳化問題

select a,sum(b) from c GROUP BY a;
select a from c;

假設c表資料量上百萬,那要怎麼優化這2個數據,讓執行更快。
謝謝了

女神的闺蜜爱上我女神的闺蜜爱上我2720 天前1033

全部回覆(4)我來回復

  • 三叔

    三叔2017-06-14 10:52:39

    沒辦法從索引上最佳化,你使用group by 而且沒有設定where條件,mysql已經全表讀取。而且假如是上百萬的數據,個人不主張在表中直接用sum去統計每個a的總數。建議優化是這樣的。
    1.建立定時任務和臨時表、統計表
    2.定時讀取一定量的數據,將那段數據統計信息記錄到統計表中,將獲取一定量數據的最後一個id值作為記錄,寫入臨時表。下次讀取時候以該id最為條件。

    這樣分段統計,可以滿足你兩個最佳化條件

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-14 10:52:39

    先a字段加上索引吧

    回覆
    0
  • 某草草

    某草草2017-06-14 10:52:39

    MySQL如何最佳化GROUP BY

    回覆
    0
  • 黄舟

    黄舟2017-06-14 10:52:39

    建立複合索引(a,b),兩個sql都會走索引掃描

    另外對於統計類sql肯定是放在專門的報表庫做的,定時分段統計

    回覆
    0
  • 取消回覆