Group by隐式排序,一个优美的BUG,全网最全原理讲解

MySQL 8.0不再支持GROUP BY隐式排序,可能导致查询结果与旧版本不同。隐式排序源于优化器选择先排序后分组以提高效率,但在升级到MySQL 8时需注意此变化。使用ORDER BY确保排序顺序,无索引时,MySQL可能使用临时表排序。
摘要由CSDN通过智能技术生成

Previously (MySQL 5.7 and lower), GROUP BY sorted implicitly under certain conditions. In MySQL 8.0, that no longer occurs, so specifying ORDER BY NULL at the end to suppress implicit sorting (as was done previously) is no longer necessary. However, query results may differ from previous MySQL versions. To produce a given sort order, provide an ORDER BY clause.

google翻译:以前(MySQL 5.7及更低版本),GROUP BY在某些条件下隐式排序。 在MySQL 8.0中,不再发生这种情况,因此不再需要在末尾指定ORDER BY NULL来抑制隐式排序(如前所述)。 但是,查询结果可能与以前的MySQL版本不同。 要产生给定的排序顺序,请提供ORDER BY子句

陈哈哈:“哦,这么看来开发老版本的同事是没用Order by,直接用了隐式排序。年轻人,不讲武德啊!!”

小王(小声):“哈哥,这模块之前好像是你负责的。”

陈哈哈(老脸一红):???

陈哈哈:“咳咳,这MySQL8.0团队不讲武德,给我挖坑!”

在这里插入图片描述

好了,接下来我们用测试数据演示一下

数据测试


下面是表T测试数据,无序


mysql> SELECT pid,appName from T;    

+--------+-------------------------+

| pid
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值