oracle中in与exist的⽤法与⽐较
最近在⼯作中⽤到oracle的in函数,但是该函数的参数个数存在上限(1000)的限制,⽽且涉及查询的两个表还在两个不同的数据库中,就⽆法使⽤exists函数来替代in的使⽤了。但还是总结⼀下in与exists的⽤法差异。
1.in适⽤于内表⽐外表数据量⼩的场景:select * from testA  a where a.client_id in (select * from testB)。
原因:in⽅法下,oracle会执⾏两个for循环遍历,外循环次数为testA的数据,内循环次数为testB的数据。如果testB的数据量超过testA,很明显执⾏效率会降低,只有testB的数据量⼩于testA时,才适合选择in⽅法;
a.client_id=
b.client_id)。
exists的用法原因:exists⽅法下,oracle会执⾏外表和内表的遍历查询,外循环次数为testA的数据,内循环次数也是testA的数据量⼤⼩。所以当内表数据量⼩于外表时,采⽤in,内表数据量⼤于外表时,采⽤exists,内表等于外表时,两者性能相当。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。