加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

oracle in和exists(in参数大于1000)

(2015-10-26 11:41:40)
标签:

it

分类: oracle

“exists”和“in”效率对比

“exists”和“in”是Oracle中,都是查询某集合的值是否存在在另一个集合,但对不同的数据有不同的用法,主要是在效率问题上存在很大的差别,

以下有两个简单例子,以说明“exists”和“in”的效率问题。

1、

 select * from Table1 where exists(select 1 from Table2 where Table1.a=Table2.a) 

Table1数据量小而Table2数据量非常大时,Table1<<Table2 时,exists的查询效率高。

 2、

 select * from Table1 where Table1.a in (select Table2.a from Table2) 

Table1数据量非常大而Table2数据量小时,Table1>>Table2 时,in的查询效率高。

 

当 in中的参数为多参数组成字符串的处理如:

 select us.* from bo_user us where  exists (select 1 from (select column_value as id  from table (split('1002,.......,1009,',
                    ',')))t where us.id=t.id);

其中将参数转换为table并通过exists 进行判断因为in的参数过多会导致效率问题。

 

 

 

0

阅读 收藏 喜欢 打印举报/Report
前一篇:html字符转义
后一篇:oracle锁表解除
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有