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

Oracle
Oracle数据库技术(32)
Oracle数据库技术(33)
Oracle数据库技术(34)
Oracle数据库技术(35)
Oracle数据库技术(36)
Oracle数据安全面面观
Oracle数据操作和控制语言详解
Oracle数据库数据对象分析
解析Oracle 8i/9i的计划稳定性
使用Oracle实现实时通信
Oracle数据库中索引的维护
Oracle数据库游标使用大全
Oracle9i中监视索引的使用
在Oracle9i中使用多种Block Size
监控Oracle数据库的常用shell脚本
Performance Improvement Tips for Oracle on UNIX
Raw Partitions and Windows NT
How to use OS commands to diagnose Database Performance issues?
Raw Devices and Oracle - 20 Common Questions and Answers
Monitor Oracle Resource Consumption in UNIX

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 483 ::
收藏到网摘: 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就要具体看情况了
有时间用具体的实例和执行计划来说明。