top
Loading...
7.2.13.MySQL如何優化GROUPBY
7.2.13. MySQL如何優化GROUP BY
7.2.13.1. 松散索引掃描
7.2.13.2. 緊湊索引掃描

滿足GROUP BY子句的最一般的方法是掃描整個表并創建一個新的臨時表,表中每個組的所有行應為連續的,然后使用該臨時表來找到組并應用累積函數(如果有)。在某些情況中,MySQL能夠做得更好,通過索引訪問而不用創建臨時表。

GROUP BY使用索引的最重要的前提條件是 所有GROUP BY列引用同一索引的屬性,并且索引按順序保存其關鍵字(例如,這是B-樹索引,而不是HASH索引)。是否用索引訪問來代替臨時表的使用還取決于在查詢中使用了哪部分索引、為該部分指定的條件,以及選擇的累積函數。

有兩種方法通過索引訪問執行GROUP BY查詢,如下面的章節所描述。在第1個方法中,組合操作結合所有范圍判斷式使用(如果有)。第2個方法首先執行范圍掃描,然后組合結果元組。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/optimization.html
北斗有巢氏 有巢氏北斗