Case:MySQL使用left join的时候or改写成union可以提高效率
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,(1)优化前:使用or的时候,SQL执行时间1.47smysql> select e.emp_no,e.first_name,d.dept_no,d.from_date,d.to_date from
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
上海挚品互联网科技有限公司
互联网新科技
互联网下的科技发展
平安科技 互联网
汇久创客互联网科技
互联网科技ppt模板
西安互联网科技公司
猫创互联网科技
互联网科技博客
华脉科技工业互联网产品
隆华科技工业互联网
欧洲十大科技互联网公司
湖南诚度互联网科技有限公司
新兴科技互联网创新大赛颁奖典礼
哈尔滨屹滨互联网科技有限公司
长沙茂晟互联网科技有限公司
工业互联网等科技实现智能化赋能
智帮互联网科技公司最近动向
郑州欣桑互联网科技有限公司
易租星互联网科技有限公司
齐家互联网科技
小马过河互联网科技
云电互联网科技
银优互联网科技有限公司
安控科技rtu产品工业互联网
群盈汇互联网科技有限公司
怎样加入科技互联网
互联网营销推广黑科技
萌小萌互联网科技河南有限公司
前海云享互联网科技