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

(编辑:jimmy 日期: 2024/10/22 浏览:2)

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

一句话新闻

一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?