数据库查询优化之用exists替换in,not exists替换not in
来源:互联网 发布:淘宝怎么买食品 编辑:程序博客网 时间:2024/06/05 14:07
对于in和not要慎用,会导致全表扫描
用户表
CREATE TABLE USER(
id INT,
TIME DATETIME,
actuin VARCHAR(25)
);
插入数据
INSERT INTO USER VALUE(101,NOW(),'下单');
INSERT INTO USER VALUE(102,NOW(),'下单');
INSERT INTO USER VALUE(103,NOW(),'下单');
INSERT INTO USER VALUE(105,NOW(),'下单');
INSERT INTO USER VALUE(106,NOW(),'下单');
INSERT INTO USER VALUE(107,NOW(),'下单');
INSERT INTO USER VALUE(108,NOW(),'下单');
日活跃表
CREATE TABLE active(
id INT,
TIME DATETIME,
actuin VARCHAR(25)
);
INSERT INTO active VALUE(101,NOW(),'下单');
INSERT INTO active VALUE(102,NOW(),'下单');
INSERT INTO active VALUE(103,NOW(),'下单');
INSERT INTO active VALUE(105,NOW(),'下单');
INSERT INTO active VALUE(106,NOW(),'下单');
INSERT INTO active VALUE(107,NOW(),'下单');
INSERT INTO active VALUE(108,NOW(),'下单');
INSERT INTO active VALUE(998,NOW(),'下单');
INSERT INTO active VALUE(999,NOW(),'下单');
用户表是用户的信息,日活跃表包含老用户和新用户。
问题?
查询日活跃表中的新用户信息。
传统的not in查询
SELECT active.id,active.TIME FROM active WHERE id NOT IN(SELECT id FROM USER);
优化的sql,使用exists
SELECT active.id,active.TIME FROM active WHERE NOT EXISTS(SELECT id FROM USER WHERE user.id=active.id);
EXISTS在SQL中的作用是:检验查询是否返回数据。当 where 后面的条件成立,则列出数据,否则为空。
- 数据库查询优化之用exists替换in,not exists替换not in
- Not in ,in替换解决文字not EXISTS,EXISTS
- 查询速度优化用not EXISTS 代替 not in
- sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句
- Sql语句优化之用exists、not exists替代in、not in
- NOT EXISTS替代NOT IN EXISTS替换DISTINCT 识别‘低效执行’的SQL语句
- NOT EXISTS替代NOT IN EXISTS替换DISTINCT 识别‘低效执行’的SQL语句
- NOT EXISTS替代NOT IN 和 EXISTS替换DISTINCT 识别‘低效执行’的SQL语句
- IN&EXISTS 与 NOT IN&NOT EXISTS 子查询 区别
- IN&EXISTS与NOT IN&NOT EXISTS 的优化
- 对IN & EXISTS NOT IN & NOT EXISTS的优化
- IN & EXISTS NOT IN & NOT EXISTS优化工作
- mySql:in,exists,not exists
- IN, EXISTS, NOT IN, NOT EXISTS
- in、not in、exists、not exists
- exists,in 和 not in ,not exists
- IN/NOT IN---EXISTS/NOT EXISTS理解
- in、exists、not in、not exists
- Android log.e(),log.d(),log.i()等的区别
- Oracle之数据库恢复到某个时间点-yellowcong
- spring技术内幕读书笔记--IOC
- WebView java.lang.NoSuchMethodException:callDrawGLFunction
- RecyclerView 获取 item 的位置
- 数据库查询优化之用exists替换in,not exists替换not in
- BugKu MISC 部分题目Write_up(一)
- 1121: 电梯
- BitmapUtil 工具类
- spring autowired
- servlet与cgi的区别与关系(1)--两者区别
- Maven学习(五)-- 聚合与继承
- Android四大组件之Activity<中>
- leetcode 287. Find the Duplicate Number