MySQL 8.0里GROUP BY有变化,注意了

  1. 云栖社区>
  2. 老叶茶馆>
  3. 博客>
  4. 正文

MySQL 8.0里GROUP BY有变化,注意了

技术小能手 2018-11-28 15:14:32 浏览1814
展开阅读全文

如题所示,MySQL 8.0开始 group by 默认是没有排序的,那MySQL 8.0之前和 8.0 就有可能结果出现不同 需要警惕

5ac6597c924ad996e4e99772be16520341ca3bc6

运行如下SQL:

a7dc425dad2f51b7428141ca7e195941cefdd09a

下面是8.0 版本:

ad1b4db9915af2e5f26290538b773e14ee81a3c0

运行相同的SQL:

1e070b6ef3254cc7c37deeabf26b253b8ea42da5

如果这种情况下 进行分页

5.7 版本:

833b86530f53845d1e3f7558be30b66d10791654

8.0版本:

2ba911ee2aa24b76b34d9036094d37412a152db8

由上可见,两个结果是不一样的,原因是:8.0之前,group by 包含using filesort,而8.0开始是没有的,为了避免这种问题,8.0开始除了索引替换排序的优化思路之外的相关排序,我们都必须使用order by来进行。

59d4fbe6b7940f932cd03a45f3eca00be6ba23eb


原文发布时间为:2018-11-28
本文作者:松华老师
本文来自云栖社区合作伙伴“老叶茶馆”,了解相关信息可以关注“老叶茶馆”。

网友评论

登录后评论
0/500
评论
技术小能手
+ 关注
所属团队号: 老叶茶馆