博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql in 查询改成_MySQL not in嵌套查询改写成外连接方式
阅读量:6279 次
发布时间:2019-06-22

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

在MySQL中,not in 嵌套查询会在数据库里面创建一张临时表,导致执行效率很低,可以改成外连接的方式处理,效率会好很多。

not in方式

mysql> select * from dept where deptno not in (select deptno from emp);

+--------+------------+---------+

| deptno | dname      | loc     |

+--------+------------+---------+

|     40 | OPERATIONS | BOSTON  |

|     50 | Research   | BeiJing |

+--------+------------+---------+

2 rows in set (0.00 sec)

mysql> explain select * from dept where deptno not in (select deptno from emp);

+----+-------------+-------+------+---------------+------+---------+------+------+-------------+

| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra       |

+----+-------------+-------+------+---------------+------+---------+------+------+-------------+

|  1 | PRIMARY     | dept  | ALL  | NULL          | NULL | NULL    | NULL |    5 | Using where |

|  2 | SUBQUERY    | emp   | ALL  | NULL          | NULL | NULL    | NULL |   14 | NULL        |

+----+-------------+-------+------+---------------+------+---------+------+------+-------------+

2 rows in set (0.00 sec)

外连接方式

mysql> select * from dept e left join emp d on e.deptno=d.deptno where d.deptno is null;

+--------+------------+---------+-------+-------+------+------+----------+------+------+--------+

| deptno | dname      | loc     | empno | ename | job  | mgr  | hiredate | sal  | com  | deptno |

+--------+------------+---------+-------+-------+------+------+----------+------+------+--------+

|     40 | OPERATIONS | BOSTON  |  NULL | NULL  | NULL | NULL | NULL     | NULL | NULL |   NULL |

|     50 | Research   | BeiJing |  NULL | NULL  | NULL | NULL | NULL     | NULL | NULL |   NULL |

+--------+------------+---------+-------+-------+------+------+----------+------+------+--------+

2 rows in set (0.00 sec)

mysql> explain select * from dept e left join emp d on e.deptno=d.deptno where d.deptno is null;

+----+-------------+-------+------+---------------+------+---------+------+------+----------------------------------------------------+

| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra                                              |

+----+-------------+-------+------+---------------+------+---------+------+------+----------------------------------------------------+

|  1 | SIMPLE      | e     | ALL  | NULL          | NULL | NULL    | NULL |    5 | NULL                                               |

|  1 | SIMPLE      | d     | ALL  | NULL          | NULL | NULL    | NULL |   14 | Using where; Using join buffer (Block Nested Loop) |

+----+-------------+-------+------+---------------+------+---------+------+------+----------------------------------------------------+

2 rows in set (0.00 sec)

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

你可能感兴趣的文章
3.31
查看>>
类对象定义 二
查看>>
收费视频网站Netflix:用户到底想要“点”什么?
查看>>
MacOS High Sierra 12 13系统转dmg格式
查看>>
关于再次查看已做的多选题状态逻辑问题
查看>>
动态下拉菜单,非hover
查看>>
政府安全资讯精选 2017年第十六期 工信部发布关于规范互联网信息服务使用域名的通知;俄罗斯拟建立备用DNS;Google打击安卓应用在未经同意情况下收集个人信...
查看>>
简单易懂的谈谈 javascript 中的继承
查看>>
iOS汇编基础(四)指针和macho文件
查看>>
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>
ArcGIS Engine 符号自动化配置工具实现
查看>>
小程序 · 跳转带参数写法,兼容url的出错
查看>>
flutter error
查看>>
Flask框架从入门到精通之模型数据库配置(十一)
查看>>
10年重新出发
查看>>
2019年-年终总结
查看>>
聊聊elasticsearch的RoutingService
查看>>