[SQL]in和exists
来源:互联网 发布:宣美的腿 知乎 编辑:程序博客网 时间:2024/05/07 01:47
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
例如:表A(小表),表B(大表)
1:select * from A where cc in (select cc from B)效率低,用到了A表上cc列的索引;
select * from A where exists(select cc from B where cc=A.cc)效率高,用到了B表上cc列的索引。
相反的2:
select * from B where cc in (select cc from A)效率高,用到了B表上cc列的索引;
select * from B where exists(select cc from A where cc=B.cc)效率低,用到了A表上cc列的索引。
not in 和not exists
如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;
而not exists 的子查询依然能用到表上的索引。
所以无论那个表大,用not exists都比not in要快。
in 与 =的区别
select name from student where name in ('zhang','wang','li','zhao');
与
select name from student where name='zhang' or name='li' or name='wang' or name='zhao'
的结果是相同的。
exists用于多表联
尽量用exists=的组合为好
exists只返回布尔值不用返回具体值in是返回具体值
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
例如:表A(小表),表B(大表)
1:select * from A where cc in (select cc from B)效率低,用到了A表上cc列的索引;
select * from A where exists(select cc from B where cc=A.cc)效率高,用到了B表上cc列的索引。
相反的2:
select * from B where cc in (select cc from A)效率高,用到了B表上cc列的索引;
select * from B where exists(select cc from A where cc=B.cc)效率低,用到了A表上cc列的索引。
not in 和not exists
如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;
而not exists 的子查询依然能用到表上的索引。
所以无论那个表大,用not exists都比not in要快。
in 与 =的区别
select name from student where name in ('zhang','wang','li','zhao');
与
select name from student where name='zhang' or name='li' or name='wang' or name='zhao'
的结果是相同的。
exists用于多表联
尽量用exists=的组合为好
exists只返回布尔值不用返回具体值in是返回具体值
- SQL exists 和in
- [SQL]in和exists
- sql exists 和in
- SQL in和exists 比较
- SQL In 和exists区别
- SQL中exists和in的区别
- SQL中exists和in的区别
- SQL:in和exists的区别(zt)
- SQL优化之-In和Exists
- SQL中exists和in的区别
- SQL中的in和exists的区别
- SQL in和exists的用法区别
- SQL中exists和in的区别
- sql 中 IN 和 EXISTS区别
- SQL中in和exists的介绍
- sql语句 in和exists的区别
- SQL中IN和EXISTS用法
- sql中exists和in的比较
- Mysql 性能参数
- 大家平时工作辛苦了,趁着这个收获的季节~秋高气爽~红枫似火~天高云淡~大家一起出去放松一下吧^_^
- Windows 8开发 WinRT APP使用其他关联应用程序打开文件
- C++中的优先级队列使用范例
- [笔记] Intel C++编译器的预定义宏(Windows版、Linux版)
- [SQL]in和exists
- 贾庆林会见林中森希望台湾奉行更积极大陆政策-贾庆林-林中森-海峡两岸关系
- 列举出所有进程(包括隐藏的)
- JSP页面打印
- Linux下的压缩解压缩命令详解
- 黑马程序员--GUI、网络编程
- AIS教程入门解码1
- ubuntu 命令行运行deb文件
- VC\GCC宏一览