mysql索引优化 - 子查询优化

news/2024/6/20 2:14:37

结论: 在范围判断时,尽量不要使用 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,电阻 红外探测有三个针脚,两端的是供电,中间是信号输出…

C++ 文件操作学习

fstream 可以对文本进行 读和写的操作ostream 只能对文本进行 写istream 只能对文本进行 读先来 了解一下 流 类库的成员函数 put(char c) 输出一个字符 write(const char * str,int n) 输出一条字符串get(char c) 获取一个字符getline(char *buf,int n,char deline\n) 读取一…

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

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

Http协议

Http 简介 Http 超文本传输协议,一种详细规定了浏览器和万维网服务器或自荐的互相通信的规则,它寻将HTML文档从WEB服务器传输到WEB浏览器 client 发出 Request 给servers servers 给一个 Response 给clientHttp Request: 包括 请求行、请求头…

.Net学习笔记----2015-07-09(基础复习和练习06)

冒泡排序, 做了两遍 // 1, 3, 4, 2, 6, 8, 7, 9, 0, 5//10个元素,从第一个开始,和数组中的每一个元素比较,//如果nums[0]>nums[1]则两个元素交换位置,依次类推直到nums[9]//也就是要比较9次//剩余1个元素就一定是最…

MQTTX与阿里云IOT平台交互,发布订阅消息,以及将设备属性发送到云平台

1 新建产品和设备,添加物模型的属性 其中产品部分需要注意的(不这样,也可以,只是个Demo,太复杂了,你会晕的) 所属品类:自定义品类 节点类型:直连设备 2 打开设备,复制 三元组 ProductKey,DeviceName,Devi…

Objective-c中 isEqual ,isEqualToString , == 三者的区别

首先 OC中的对象都是用指针表示,方法的调用是基于消息机制实现, 比较的自然是指针指向的地址 然后 说下 isEqual 和 isEqualToString 的区别 IsEqual 是 NSObject 的方法 ,而 isEqualToString 是 NSString 的方法 因此从继承关系角度来说isEq…

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…

编写高质量的Objective-C代码

点标记语法 属性和幂等方法(多次调用和一次调用返回的结果相同)使用点标记语法访问,其他的情况使用方括号标记语法。良好的风格:view.backgroundColor [UIColor orangeColor];[UIApplication sharedApplication].delegate;不良的…