mysql索引优化 - 子查询优化

news/2023/9/27 7:29:10

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

取所有不为掌门人的员工,按年龄分组!
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;

如何优化? 1 解决 dept 表的全表扫描,建立 ceo 字段的索引:
                  2 语句改成left join的方式

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; (推荐)


为方便理解上面的sql,个人做了个简单的Demo
两张表 img_type,img
  

--sql-1 不推荐
SELECT imgname , COUNT(*)  FROM img WHERE typeid NOT IN (SELECT typeid FROM img_type WHERE typeid IS NOT NULL) GROUP BY imgname;--sql-2 推荐
SELECT imgname ,COUNT(*)  FROM img LEFT JOIN img_type ON img.typeid=img_type.typeid WHERE img_type.typeid IS NULL GROUP BY imgname;--sql-3 方便理解,测试用
SELECT * FROM img LEFT JOIN img_type ON img.typeid=img_type.typeid

 前两个sql运行结果

第三个sql运行结果


https://dhexx.cn/news/show-17238.html

相关文章

树莓派折腾---红外探测

先上个图: 用到的配件: 1.主角:树莓派 2.配角:红外探测 3.打杂:面包板,杜邦线,蜂鸣器,LED,电阻 红外探测有三个针脚,两端的是供电,中间是信号输出…

mysql索引优化 - 排序分组优化

where 条件和 on 的判断这些过滤条件,作为优先优化的部分,是要被先考虑的! 其次,如果有分组和排序,那么 也要考虑 grouo by 和 order by。1. 必须有过滤,才会用到索引 结论:where,li…

UIView详解

来源:http://blog.csdn.net/chengyingzhilian/article/details/7894276 UIView表示屏幕上的一块矩形区域,它在App中占有绝对重要的地位,因为IOS中几乎所有可视化控件都是UIView的子类。负责渲染区域的内容,并且响应该区域内发生的…

jmeter基础入门(HTTP,TCP,SQL查询,新增,查看报告)

示例下载地址 https://download.csdn.net/download/qq_41712271/20398149有坑的地方 1 发送TCP请求,注意Tcp client classname,如下图,这里发送16进制,所以写 BinaryTCPClientImpl TCPClientImpl:纯文本为内容进行发送 BinaryT…

这么方便吗?用ChatGPT生成Excel(详解步骤)

文章目录前言使用过 ChatGPT 的人都知道,提示占据非常重要的位置。而 Word,Excel、PPT 这办公三大件中,当属 Excel 最难搞,想要熟练掌握它,需要记住很多公式。但是使用提示就简单多了,和 ChatGPT 聊聊天就能…

jenkins持续集成入门1

jenkins持续集成相关的软件安装分布架构图 软件安装的列表如下: jdk8或以上 maven git GitLab-EE Docker Harbor (docker私服) jenkins SonarQube (代码审查) Tomcat

HTML5新增Canvas标签及对应属性、API详解(基础一)

知识说明: HTML5新增的canvas标签,通过创建画布,在画布上创建任何想要的形状,下面将canvas的API以及属性做一个整理,并且附上时钟的示例,便于后期复习学习!Fighting! 一、标签原型 &…

gitlab 使用中碰到的常见问题整理

1 gitlab的默认域名为http://gitlab.example.com,如何修改https://blog.51cto.com/u_3265857/2347596 2 windows下向gitlab提交代码,如果添加ssh认证https://www.cnblogs.com/573734817pc/p/13711146.html 3 gitlab push时报错error:failed to push som…

HDU 4793 2013 Changsha Regional Collision[简单的平面几何]

圆形奖章给定半径的半径和圆形区域。另一个硬币的半径,然后在桌面上平稳。给定硬币的速(的大小和方向,vx,vy)和坐标(奖牌同心圆形区域,圆和心脏为源),Q币在一个圆形区域和…

iOS手势识别的详细介绍

1、UIGestureRecognizer介绍 手势识别在iOS上非常重要,手势操作移动设备的重要特征,极大的增加了移动设备使用便捷性。iOS系统在3.2以后,为方便开发这使用一些常用的手势,提供了UIGestureRecognizer类。手势识别UIGestureRecogniz…