欢迎来到代码驿站!

Mysql

当前位置:首页 > 数据库 > Mysql

数据库查询优化之子查询优化

时间:2021-06-11 08:07:30|栏目:Mysql|点击:

1. 案例

取所有不为掌门人的员工,按年龄分组!

select age as '年龄', count(*) as '人数' from t_emp where id not in 
(select ceo from t_dept where ceo is not null) group by age;

如何优化?

①解决dept表的全表扫描,建立ceo字段的索引:

此时,再次查询:

②进一步优化,替换not in。

上述SQL可以替换为:

select age as '年龄',count(*) as '人数' from emp e left join dept d on e.id=d.ceo where d.id is null group by age;

结论: 在范围判断时,尽量不要使用not in和not exists,使用 left join on xxx is null代替。

总结

上一篇:解析windows下使用命令的方式安装mysql5.7的方法

栏    目:Mysql

下一篇:MySQL存储过程中一些基本的异常处理教程

本文标题:数据库查询优化之子查询优化

本文地址:http://www.codeinn.net/misctech/139655.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有