SQL In 和exists区别
来源:互联网 发布:网络招生哪家强 编辑:程序博客网 时间:2024/04/30 11:22
in和exists
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为exists比in效率高的说法是不准确的。 如果查询的两个表大小相当,那么用in和exists差别不大。
全文: in和existsin 是把外表和内表作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要快。
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'
的结果是相同的。
IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。
来源:http://hi.baidu.com/85718779/
- SQL In 和exists区别
- SQL中exists和in的区别
- SQL中exists和in的区别
- SQL:in和exists的区别(zt)
- SQL中exists和in的区别
- SQL中的in和exists的区别
- SQL in和exists的用法区别
- SQL中exists和in的区别
- sql 中 IN 和 EXISTS区别
- sql语句 in和exists的区别
- SQL exists和in的区别
- sql中exists和in区别
- SQL中exists和in的区别
- SQL中in和exists的区别
- SQL中IN和EXISTS用法的区别,sql中exists,not exists的用法
- SQL中IN和EXISTS用法的区别,sql中exists,not exists的用法
- SQL exists 和in
- [SQL]in和exists
- 随机数
- DirectShow应用:只用API调用实现网络播放
- 7月15日---7月21日(计划50小时,实际12小时,还有5258小时)
- 关于C++的一些文章
- 我的第一个C++上机程序
- SQL In 和exists区别
- POJ 1050 To the Max
- 浅谈基数排序
- 微积分基础知识
- 可变参数与参数进栈顺序
- 实现服务器与数据库的连接
- 开源b3log代码赏析
- windows下emacs中c++编程简单实例
- 继承和对象自然增长