sql中in和exists的区别效率问题 转

 我来答
tjrmgs
推荐于2016-08-11 · TA获得超过5765个赞
知道大有可为答主
回答量:2161
采纳率:94%
帮助的人:1034万
展开全部
很多人和说法会认为in和Exists相比后者的效率要高。

但是以我本人使用数据库的经验来看,两者的运行效率其实不相伯仲,不管有无可被利用的索引,它们在运行速度上没有太明显的分别,硬要说哪个快一些的话exists可能会快一点点,但是这种区别通常可以忽略。

然而在求非交集时 not in和not exists运行效率上的差距就很大,碰到大数据表时not in不管有无可被利用的索引,都会导致效率悲剧,其运行速度极之糟糕往往要运行很长的时间才能返回结果,期间系统就像假死一样。not exists在有可被利用的索引的情况下碰到大数据表时其运行效率非常高、表现优异,但是若没有可被利用索引的情况下其运行效率也很不好,此时其运行速度尽管要比not in快上不少但还是属于那种令人无法接受的“蜗速”。

in和exists随各人喜好随便用,特别是数据量不大时。面对大数据表时就要小心,not in无论有无可被利用的索引都应避免使用,not exists在有可被利用索引的情况下可作为首选,反之也要避免使用。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式