Oracle select in/exists/not in/not exits
来源:互联网 发布:js页面倒计时代码 编辑:程序博客网 时间:2024/05/18 03:35
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
一直以来认为exists比in效率高的说法是不准确的。
如果查询的两个表大小相当,那么用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要快。
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'
的结果是相同的。
http://blog.163.com/sz_putishu/blog/static/121826854200963131426178/
- Oracle select in/exists/not in/not exits
- Oracle select in/exists/not in/not exits
- Oracle select in/exists/not in/not exits
- oracle in,exists,not in,not exists
- oracle 反联结 NOT IN、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
- in,exists,not in ,not exists效率
- Exists,not Exists,in,not in
- in、exists、not in、not exists
- not in 和 not exits 的区别
- mySql:in,exists,not exists
- not in/not exists+null
- not in不等于not exists
- not exists不等于not in
- 贪心算法之找钱
- 很好的技术文件集合
- Oracle DBA 的个人复习笔记——一些简单的Oracle内部简介(2)。
- 今天拥有博客了
- 我给你个永远前进的理由
- Oracle select in/exists/not in/not exits
- 角度
- 找不到文档关联程序的解决方法
- November, 23
- flex的“session”代替方案
- 博客
- Vector Markup Language (VML)
- 运行 Unix网络编程 中的第一个例子 unp学习 实例的运行
- pv3d测试