最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-09 20:21:19
文档

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

数据库查询优化之子查询优化: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表
推荐度:
导读数据库查询优化之子查询优化: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表


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代替。

总结

文档

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

数据库查询优化之子查询优化: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表
推荐度:
标签: 查询 数据 数据库
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top