博客
关于我
mysql 中的all,5分钟了解MySQL5.7中union all用法的黑科技
阅读量:796 次
发布时间:2023-02-10

本文共 867 字,大约阅读时间需要 2 分钟。

MySQL 5.6、5.7 和 MariaDB 10.1 中 UNION ALL 的表现对比

随着技术的不断进步,UNION ALL 在 MySQL 和 MariaDB 的处理方式有了显著变化。本文将从 MySQL 5.6、5.7 和 MariaDB 10.1 的角度,分析 UNION ALL 的执行机制及其对性能的影响。

MySQL 5.6.25 的表现

在 MySQL 5.6.25 中,UNION ALL 的执行机制较为复杂。测试结果表明,当执行 SELECT * FROM helei, t 时,系统会首先分别查询 helei 表和 t 表的数据,然后将结果合并到一个临时表中,最后逐行返回给客户端。这一过程虽然保证了查询的正确性,但会产生额外的内存和 I/O 开销。

MySQL 5.7.15 的表现

MySQL 5.7.15 对 UNION ALL 的处理方式有了显著改进。测试发现,系统不再创建临时表,而是直接将 helei 表和 t 表的查询结果按顺序输出到客户端。这一优化减少了 I/O 和内存的开销,使得联合查询更加高效。

MariaDB 10.1.16 的表现

在 MariaDB 10.1.16 中,UNION ALL 的执行机制与 MySQL 5.7 的表现相似。测试结果显示,无论是在 MySQL 5.7 还是 MariaDB 10.1,系统都会直接输出 helei 表的查询结果后,接着输出 t 表的查询结果,避免了临时表的使用,从而提高了性能。

关于 UNIONUNION ALL 的优化

值得注意的是,UNIONUNION ALL 在执行优化方面存在显著差异。在 UNION ALL 的外部使用 ORDER BY 是无效的,因为 UNION ALL 仅负责简单的集合操作,而无法对结果进行排序。

总结

通过对比不同版本数据库的表现,可以看出 UNION ALL 的执行机制随着时间的推移逐渐优化,减少了对资源的消耗。对于需要执行联合查询的场景,选择较新的数据库版本能够显著提升性能表现。

转载地址:http://egffk.baihongyu.com/

你可能感兴趣的文章
MySQL 中开启二进制日志(Binlog)
查看>>
MySQL 中文问题
查看>>
MySQL 中日志的面试题总结
查看>>
mysql 中的all,5分钟了解MySQL5.7中union all用法的黑科技
查看>>
MySQL 中的外键检查设置:SET FOREIGN_KEY_CHECKS = 1
查看>>
Mysql 中的日期时间字符串查询
查看>>
mysql 中索引的问题
查看>>
MySQL 中锁的面试题总结
查看>>
MySQL 中随机抽样:order by rand limit 的替代方案
查看>>
MySQL 为什么需要两阶段提交?
查看>>
mysql 为某个字段的值加前缀、去掉前缀
查看>>
mysql 主从
查看>>
mysql 主从 lock_mysql 主从同步权限mysql 行锁的实现
查看>>
mysql 主从互备份_mysql互为主从实战设置详解及自动化备份(Centos7.2)
查看>>
mysql 主从关系切换
查看>>
MYSQL 主从同步文档的大坑
查看>>
mysql 主键重复则覆盖_数据库主键不能重复
查看>>
Mysql 事务知识点与优化建议
查看>>
Mysql 优化 or
查看>>
mysql 优化器 key_mysql – 选择*和查询优化器
查看>>