select a,sum(b) from c GROUP BY a; select a from c;
假設c表資料量上百萬,那要怎麼優化這2個數據,讓執行更快。 謝謝了
沒辦法從索引上最佳化,你使用group by 而且沒有設定where條件,mysql已經全表讀取。而且假如是上百萬的數據,個人不主張在表中直接用sum去統計每個a的總數。建議優化是這樣的。 1.建立定時任務和臨時表、統計表2.定時讀取一定量的數據,將那段數據統計信息記錄到統計表中,將獲取一定量數據的最後一個id值作為記錄,寫入臨時表。下次讀取時候以該id最為條件。
這樣分段統計,可以滿足你兩個最佳化條件
先a字段加上索引吧
MySQL如何最佳化GROUP BY
建立複合索引(a,b),兩個sql都會走索引掃描
另外對於統計類sql肯定是放在專門的報表庫做的,定時分段統計
沒辦法從索引上最佳化,你使用group by 而且沒有設定where條件,mysql已經全表讀取。而且假如是上百萬的數據,個人不主張在表中直接用sum去統計每個a的總數。建議優化是這樣的。
1.建立定時任務和臨時表、統計表
2.定時讀取一定量的數據,將那段數據統計信息記錄到統計表中,將獲取一定量數據的最後一個id值作為記錄,寫入臨時表。下次讀取時候以該id最為條件。
這樣分段統計,可以滿足你兩個最佳化條件
先a字段加上索引吧
MySQL如何最佳化GROUP BY
建立複合索引(a,b),兩個sql都會走索引掃描
另外對於統計類sql肯定是放在專門的報表庫做的,定時分段統計