1. 程式人生 > 其它 >MySQL 不同版本下的group by

MySQL 不同版本下的group by

MySQL 不同版本下的group by

大家有沒有遇到過這樣的坑,在測試站的sql執行得好好的,到線上就不行了。這裡就來記錄下我在使用mysqll分組查詢所遇到的坑。

1、group by

Group by 語句用於結合聚合函式(如count,sum,avg,max,min),根據一個或多個列對結果集進行分組。

1)去掉重複值:根據group by後面的關鍵字只顯示一行結果;

2)mysql5.7預設開啟引數ONLY_FULL_GROUP_BY,表示完全group by,即select後面跟的列group by後面也必須有,但是group by後面跟的列,select後面不一定需要出現

3)mysql5.7group by 預設還有排序功能,8.0預設只分組不排序,需要加order by才排序,這點可以從執行結果是否有Using filesort來判斷

2. mysql8.0新特性

1)group by 不再隱式排序

mysql 8.0 對於group by 欄位不再隱式排序,如需要排序,必須顯式加上order by 子句。

好處:在使用GROUP BY 這樣的語句,在沒有特殊優化的情況下,MYSQL 8 不在使用 FILESORT 排序後,速度有了大幅度的提升,這說明在沒有優化的情況下,MYSQL 8 對於排序和GROUP BY 這樣的查詢時有利的,並且隨著提取的資料越多,則越快,這對 開發者來說是一個好訊息。

測試站使用的是mysql5.7版本,線上使用的mysql8.0版本