oracle数据库里in 和exits 到底有什么区别? 20

 我来答
yu8196378
推荐于2017-05-21 · 超过16用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:30.5万
展开全部
表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时 小表在前大表在后
威孚半导体技术
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层... 点击进入详情页
本回答由威孚半导体技术提供
zlalijie
2012-11-11 · 超过11用户采纳过TA的回答
知道答主
回答量:21
采纳率:0%
帮助的人:35.8万
展开全部
完全用于不同场合的东西啊。
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谓词。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
樹葉風
2012-11-09
知道答主
回答量:51
采纳率:0%
帮助的人:17.5万
展开全部
你可以看看sql语句优化相关的问题,一般sql语句优化将用exits代替in
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
micro0369
2012-11-09 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4023万
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式