当前位置: 首页 > 图文教程 > 数据库 > Oracle > Oracle In和exists not in和not exists的比较分析

Oracle
oracle下加密存储过程的方法
浅谈LogMiner的使用方法
oracle 下WITH CHECK OPTION用法
在Oracle中向视图中插入数据的方法
DBA_2PC_PENDING 介绍
在Oracle PL/SQL中游标声明中表名动态变化的方法
DB2和 Oracle的并发控制(锁)的比较
Oracle 下的开发日积月累
Oracle下时间转换在几种语言中的实现
查看Oracle的执行计划一句话命令
Oracle 下医嘱执行函数
oracle应用程序实现打包 的方法
新Orcas语言特性-查询句法
oracle下实现恢复一个丢失的数据文件的代码
oracle命令行删除与创建用户的代码
oracle的一些tips技巧
oracle下巧用bulk collect实现cursor批量fetch的sql语句
ORACLE LATERAL-SQL-INJECTION 个人见解
Oracle入侵常用操作命令整理
oracle chm帮助文件下载

Oracle In和exists not in和not exists的比较分析


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 490 ::
收藏到网摘: n/a

一个是问in exist的区别,一个是not in和not exists的区别 把这两个很普遍性的网友比较关心的问题总结回答一下。
in和exist的区别
从sql编程角度来说,in直观,exists不直观多一个select,
in可以用于各种子查询,而exists好像只用于关联子查询
从性能上来看
exists是用loop的方式,循环的次数影响大,外表要记录数少,内表就无所谓了
in用的是hash join,所以内表如果小,整个查询的范围都会很小,如果内表很大,外表如果也很大就很慢了,这时候exists才真正的会快过in的方式。
not in和not exists的区别
not in内外表都进行全表扫描,没有用到索引;
not extsts 的子查询能用到表上的索引。
所以推荐用not exists代替not in
不过如果是exists和in就要具体看情况了
有时间用具体的实例和执行计划来说明。