由於在 GROUP BY 中使用到群組函數,所以會覺得跟 DISTINCT 的結果一模一樣,但如果用工具記錄下兩者所花費的執行時間,你會發現單純選取不重複的資料行時,使用 GROUP BY 會比 DISTINCT 花更多的時間,尤其在你的資料表龐大或需要多個資料表的關聯時,感覺會特別明顯。
這是因為在 SQL 中,使用 DISTINCT 是直接將資料行選取出來後,直接排除掉重複的資料行即為結果,所需要的 CPU 計算時間比較少;而使用 GROUP BY 則選出資料集後先將資料集進行排序、分組等動作,最後再在每個組別中抽出任一資料行做為結果,CPU 需要花費比較多的計算時間來處理這一連串的過程。
為了養成良好的習慣,建議你根據目的的不同來撰寫 SQL 指令,如果只是要選出不重複的資料行,還是儘量使用 DISTINCT 會比較好!
GROUP BY
|
DISTINCT
|
GROUP BYSELECT `column` FROM `table` GROUP BY `column`
可用於將重複的資料分組進行動作。 |
DISTINCTSELECT DISTINCT `column` FROM `table`
可去除重複的資料。 |
沒有留言:
張貼留言