码迷,mamicode.com
首页 > 其他好文 > 详细

oralce中in和exists性能分析

时间:2015-03-11 10:54:28      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

在我们平常写sql的时候,in和exists这两个关键词会经常用到,所以我们有必要对它们的性能作一个分析。

[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。如果查询的两个表大小相当,那么用in和用exists基本没什么区别。

[not in和not exists性能分析] 

如果查询语句用到了not in, 那么内外表都进行全表扫描,没有用到索引。

而not exists的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。


oralce中in和exists性能分析

标签:

原文地址:http://blog.csdn.net/zdp072/article/details/44194935

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!