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

作者:qq_43193797 时间:2024-01-27 18:25:25 

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

总结

来源:https://blog.csdn.net/qq_43193797/article/details/85252408

标签:mysql,数据库,子查询,优化
0
投稿

猜你喜欢

  • 文档对象模型DOM通俗讲解

    2024-05-13 09:36:55
  • 将Django使用的数据库从MySQL迁移到PostgreSQL的教程

    2024-01-26 20:09:26
  • python中Requests请求的安装与常见用法

    2022-08-15 20:36:35
  • Node+OCR实现图像文字识别功能

    2024-04-22 13:01:41
  • javascript+css实现俄罗斯方块小游戏

    2024-04-23 09:28:06
  • Python 实现引用其他.py文件中的类和类的方法

    2023-08-02 10:38:01
  • 解决Win7 x64安装解压版mysql 5.7.18 winx64出现服务无法启动问题

    2024-01-22 07:57:39
  • JavaScript 数组中最大最小值

    2024-04-27 15:23:56
  • python下的opencv画矩形和文字注释的实现方法

    2022-12-26 22:27:17
  • golang通过mysql语句实现分页查询

    2024-01-23 13:30:03
  • Mysql 数据库结构及索引类型

    2024-01-20 23:40:35
  • asp 在线备份与恢复sqlserver数据库的代码

    2011-03-06 11:14:00
  • 排版自适应提升可访问性

    2009-04-08 12:47:00
  • 谈谈网页设计中的字体应用 (1) Font Set

    2009-11-24 12:55:00
  • 分页存储过程(用存储过程实现数据库的分页代码)

    2024-01-20 05:22:57
  • Django Channels 实现点对点实时聊天和消息推送功能

    2022-04-03 10:37:56
  • Python实现学生管理系统的完整代码(面向对象)

    2023-09-11 19:08:55
  • 网站的视觉路径和版式设计

    2008-04-15 14:35:00
  • 用tensorflow构建线性回归模型的示例代码

    2022-04-12 03:41:47
  • Python线性回归实战分析

    2023-05-19 04:35:42
  • asp之家 网络编程 m.aspxhome.com