Case:MySQL使用left join的时候or改写成union可以提高效率
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,(1)优化前:使用or的时候,SQL执行时间1.47smysql> select e.emp_no,e.first_name,d.dept_no,d.from_date,d.to_date from
千家信息网最后更新 2025年11月11日Case:MySQL使用left join的时候or改写成union可以提高效率
(1)优化前:使用or的时候,SQL执行时间1.47s
mysql> select e.emp_no,e.first_name,d.dept_no,d.from_date,d.to_date from employees e left join dept_emp d on e.emp_no=d.emp_no where e.emp_no=32000 or d.from_date='1996-11-24';58 rows in set (1.47 sec)mysql> desc select e.emp_no,e.first_name,d.dept_no,d.from_date,d.to_date from employees e left join dept_emp d on e.emp_no=d.emp_no where e.emp_no=32000 or d.from_date='1996-11-24';+----+-------------+-------+------------+------+----------------+---------+---------+--------------------+--------+----------+-------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+------+----------------+---------+---------+--------------------+--------+----------+-------------+| 1 | SIMPLE | e | NULL | ALL | PRIMARY | NULL | NULL | NULL | 299335 | 100.00 | NULL || 1 | SIMPLE | d | NULL | ref | PRIMARY,emp_no | PRIMARY | 4 | employees.e.emp_no | 1 | 100.00 | Using where |+----+-------------+-------+------------+------+----------------+---------+---------+--------------------+--------+----------+-------------+2 rows in set, 1 warning (0.00 sec)
(2)优化后:相同结果集,使用union的时候,SQL执行时间只需0.23s
mysql> select e.emp_no,e.first_name,d.dept_no,d.from_date,d.to_date from employees e left join dept_emp d on e.emp_no=d.emp_no where e.emp_no=32000 -> union -> select e.emp_no,e.first_name,d.dept_no,d.from_date,d.to_date from employees e left join dept_emp d on e.emp_no=d.emp_no where d.from_date='1996-11-24';58 rows in set (0.23 sec)mysql> desc select e.emp_no,e.first_name,d.dept_no,d.from_date,d.to_date from employees e left join dept_emp d on e.emp_no=d.emp_no where e.emp_no=32000 union select e.emp_no,e.first_name,d.dept_no,d.from_date,d.to_date from employees e left join dept_emp d on e.emp_no=d.emp_no where d.from_date='1996-11-24';+----+--------------+------------+------------+--------+----------------+---------+---------+--------------------+--------+----------+-----------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+--------------+------------+------------+--------+----------------+---------+---------+--------------------+--------+----------+-----------------+| 1 | PRIMARY | e | NULL | const | PRIMARY | PRIMARY | 4 | const | 1 | 100.00 | NULL || 1 | PRIMARY | d | NULL | ref | PRIMARY,emp_no | PRIMARY | 4 | const | 1 | 100.00 | NULL || 2 | UNION | d | NULL | ALL | PRIMARY,emp_no | NULL | NULL | NULL | 331143 | 10.00 | Using where || 2 | UNION | e | NULL | eq_ref | PRIMARY | PRIMARY | 4 | employees.d.emp_no | 1 | 100.00 | NULL || NULL | UNION RESULT || NULL | ALL | NULL | NULL | NULL | NULL | NULL | NULL | Using temporary |+----+--------------+------------+------------+--------+----------------+---------+---------+--------------------+--------+----------+-----------------+5 rows in set, 1 warning (0.00 sec)
时候
时间
相同
只需
结果
效率
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
end if在数据库
服务银行的软件开发公司
根据以上数据库
服务器备份方法
暗黑重制版服务器登录不上了
陕西广电网络安全吗
网络安全大赛怎么画
服务器综合管理系统
SOCKS服务器
jet数据库引擎更新失败
修哪儿互联网科技有限公司
成都网络安全公司名录
网吧服务器安全防护
组装服务器的招聘信息
十三五期间网络技术突破
路由器怎么查看虚拟服务器
网络安全大赛公安
2019年承载网络技术支撑
苹果有多少icloud服务器
软件开发 瀑布
高效办理的聊天软件开发
软件开发公司怎么卖
数据库对磁盘性能的要求
软件开发干了10年
地下城服务器拒绝连接
加速器服务器配置要求
餐饮软件开发周期
石景山区学网络技术
vb数据库开发
少先队组织录入系统数据库