oracle数据库里in 和exits 到底有什么区别? 20
4个回答
展开全部
表A(小表),表B(大表)
select * from B where cc in (select cc from A) 这个语句中是先从A表中把cc找出来,然后根据cc再在B中去找相关的cc 由于A表的cc远小于B表的cc 所以可以节省时间
select * from B exists (select cc from A where cc=B.cc)这句话是先从B表里把cc找出来 然后再在A表里找相关的cc 由于B表的cc远多于A表的cc 所以这样做很浪费时间
总结: 用in 时 大表在前小表在后
用exists时 小表在前大表在后
select * from B where cc in (select cc from A) 这个语句中是先从A表中把cc找出来,然后根据cc再在B中去找相关的cc 由于A表的cc远小于B表的cc 所以可以节省时间
select * from B exists (select cc from A where cc=B.cc)这句话是先从B表里把cc找出来 然后再在A表里找相关的cc 由于B表的cc远多于A表的cc 所以这样做很浪费时间
总结: 用in 时 大表在前小表在后
用exists时 小表在前大表在后
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
展开全部
完全用于不同场合的东西啊。
in其实等同于 where col=v1 or col=v2 or col=v3 ....,只不过用in更方便。(注意:null除外)
exists其实等同于表关联后,只取主表部分内容而已,相当于:select distinct maintb_cols from maintb,subtb where xxxxxx,当然,没人会这么些,太别扭,所以oracle才提供了exists与not exists谓词。
in其实等同于 where col=v1 or col=v2 or col=v3 ....,只不过用in更方便。(注意:null除外)
exists其实等同于表关联后,只取主表部分内容而已,相当于:select distinct maintb_cols from maintb,subtb where xxxxxx,当然,没人会这么些,太别扭,所以oracle才提供了exists与not exists谓词。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以看看sql语句优化相关的问题,一般sql语句优化将用exits代替in
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询