您的位置:首页 > 数据库 > Oracle

Oracle中 IN 和 EXISTS 的性能区别和使用注意事项

2014-04-04 17:13 489 查看
1.对于IN 和 EXISTS 的性能区别:
(1). select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ;
T1数据量小而T2数据量非常大时,T1<<T2 时,(1)的查询效率高。
(2). select * from T1 where T1.a in (select T2.a from T2) ;
T1数据量非常大而T2数据量小时,T1>>T2 时, (2) 的查询效率高。
即,如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in,反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists。
2.NOT IN 与NOT EXISTS:
NOT EXISTS 与 NOT IN 不能完全互相替换,看具体的需求。如果选择的列可以为空,则不能被替换。

本文出自 “有梦就有希望” 博客,请务必保留此出处http://mengzhengbin520.blog.51cto.com/7590564/1390711
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: