oralce中in和exists性能分析

在我们平常写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性能分析

相关文章:

你感兴趣的文章:

标签云: