mysql5.7 空间查询_MYSQL 8 VS MYSQL 5.7 在复杂查询中 到底好了多少

本文对比了MySQL 8与MySQL 5.7在复杂查询上的性能,发现MySQL 8在GROUP BY和不使用FILESORT的排序中表现出显著速度提升,尤其是在大量数据提取时。然而,对于某些特定简单语句,MySQL 8可能并未明显占优。在优化不足的情况下,MySQL 8的Hash Join和新功能对多数查询有所帮助,但是否升级取决于系统的查询逻辑复杂度。
摘要由CSDN通过智能技术生成

8d008e00a32d20705f66e8b9f21acd85.png

MySQL 8 最终是要大面积替换MYSQL5.7 , 之前的文字可能给人感觉MYSQL 8 还不如 MYSQL 5.7 ,实际上不然,任何东西新的一定有问题,解决解决就好了,在复杂查询这块 MYSQL 5.7 的确是和MYSQL 8 已经有了分别,对于开发人员撰写SQL 有什么帮助我们可以看看下面的一些例子。

下面是MYSQL 8 和 MYSQL 5.7 在一个稍微复杂查询的执行计划

c130089c25293ea64e68a0f451cbfad4.png

0b1a09a9fe6b7c8f6d8fde79edc16ef8.png

对比上面的图,一样的语句,一样的数据库,一样的表,一样的数据行数和内容,mysql 8 由于各种优化,去掉了 using firesort,并且由于这一项,节省了近 20秒

08da3821980a94acc34b27a88729d11b.png

22a7bc24ac88072a477717f5e82ed1fe.png

下面还有相关的例子,还是出了MYSQL 版本不一致,包括硬件其他的都一样的情况下,mysql 8 比 mysql 5.7 要快 4倍 34秒与128秒的区别,不同的还是那个 filesort

mysql 8.018

875df531a56f2ba73c3c61c003062a1d.png

b04026b72e5f0fc5425ded4689c1f13e.png

mysql 5.7.23

75e07e8cfc6e0e3265a7727e5b1e94e5.png

a485ef2203e476cc8ab917a2bb5c10a9.png

通过这两个例子可以看到,在使用GROUP BY 这样的语句,在没有特殊优化的情况下,,MYSQL 8 不在使用 FILESORT 排序后,速度有了大幅度的提升,这说明在没有优化的情况下,MYSQL 8 对于排序和GROUP BY 这样的查询时有利的,并且随着提取的数据越多,则越快,这对 DEVELOPER 是一个好消息。

MYSQL 8

a69b0eb7bd53fb7637b64171d2eecad8.png

4db945ac624252fdcea23c1b361e0db4.png

MySQL 5.7

638adcb5d71607275e95d2b6e667b37f.png

9237ff82bc88a51e4489c0b7b5ee42d9.png

上面的测试中,如果不带有Join salaries 的情况下,实际情况是MYSQL 5,7 还会稍微的好一些,MYSQL 8 会将not exists not in 里面的子查询先 Materialized  一下,相对来说,如果 not exists not in 里面的要排除的数据越少越好,条件越精准越好,这样MYSQL 8 的 antijoin 的功能就会能帮助查询更有效的排除数据。这里在所有都一样的情况下,MYSQL 8 比 MYSQL 5.7 快 2倍的时间。

当然也有一些差强人意的,下面的两个查询时间上基本相同,可能需要更多的将语句重新格式的时间,mysql 8 还慢了0.2秒

MYSQL 8

24f3804609cb051273953e2deb2da771.png

6339dbcb5a41d0c349c2b88257c50a40.png

总体来说mysql 在hash join , 免filesort 的新功能对大部分查询语句是有帮助的,但实际上在测试中有些简单的语句,MYSQL 8 并不能占据什么便宜,或者说还可能会比MYSQL 5.7 慢了“一眨眼” 的功夫。

最后总结一下,

如果当前MYSQL 5.X 中运行的系统逻辑并不复杂,执行的语句都是简单的,那换了MYSQL 8 可能并不能得到什么好处,甚至会“挨骂”。

而如果本身就是从其他数据库迁移过来的系统,语句写的比较“水”,则更换MYSQL 8 会让一些SQL 跑的好看一些, 期待MYSQL 也能并行查询。

c44fbdced1b821487274f3214a9bd29f.png

7759cea6e4c81a1fd3efe0c6a5ea29e9.png

0da754872b3119e7cc1bc76e4e8c656d.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值