SQL in与exists区别
来源:互联网 发布:编程技术 编辑:程序博客网 时间:2024/05/17 03:30
in 和exists
in是把外表和内表作hash 连接,而exists 是对外表作loop 循环,每次loop 循环再对内表进行查询。
一直以来认为exists 比in 效率高的说法是不准确的。如果查询的两个表大小相当,那么用in 和exists 差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用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 extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists 都比not in 要快。
阅读全文
0 0
- SQL in与exists区别
- sql中in与exists的区别
- SQL中EXISTS与IN的区别
- sql-exists与in的区别
- sql中exists与in的区别
- SQL exists 与 in
- SQL 中的in 语句 IN 与 EXISTS 的区别
- sql里的exists与in、not exists与not in的区别
- sql语句中in与exists not in与not exists的区别
- 浅谈sql中的in与not in,exists与not exists的区别
- 浅谈sql中的in与not in,exists与not exists的区别
- 浅谈sql中的in与not in,exists与not exists的区别
- sql中的in与not in,exists与not exists的区别
- 浅谈sql中的in与not in,exists与not exists的区别
- 浅谈sql中的in与not in,exists与not exists的区别
- 浅谈sql中的in与not in,exists与not exists的区别
- 浅谈sql中的in与not in,exists与not exists的区别
- 浅谈sql中的in与not in,exists与not exists的区别
- 要求有一个abstract类,类名为Employee
- 我的js无限级下拉列表级联插件
- 2017.11.6总结
- node获取访问的当前的完成的url
- Recall/Precision/FPPI评价方式详解
- SQL in与exists区别
- MFC基于select模型的套接字类之服务器(5)
- 机器学习基础——矩阵
- PHP延迟静态绑定
- 如何使用php向百度站长平台推送
- 大型网站技术架构-核心原理与案例分析之缓存01
- vim 编辑
- android日志打印
- U