sql查询效率

IN和exists我在网上搜索资料,看到很多人建议用exists代替in效率比较高,可我测试后发现并非如此,我想exists代替in的说法别人也肯定测试过,这让我感到有点... IN和exists 我在网上搜索资料,看到很多人建议用exists代替 in 效率比较高,可我测试后发现并非如此,我想exists代替in的说法 别人也肯定测试过,这让我感到有点迷糊了 两者比较效率高低 这一说法是否正确? 展开
 我来答
WHITE_WIN
2013-06-21 · TA获得超过6111个赞
知道大有可为答主
回答量:3759
采纳率:50%
帮助的人:1890万
展开全部
我想是这样的,IN后面的子查询数据越多,相对EXISTS查询就会越慢。IN子查询中的记录只有几十条件,那么应该是效率很高的,因为其只查询单个字段,如果这个字段是被索引过的,会更快

EXISTS相对于查询子表数据较多的情况。
可以这样想,EXISTS每个子查询是一条记录。而IN子查询每个子查询会是多条甚至数万条记录。所以,子查询记录越多,IN的速度越慢。
但是,EXSITS是能完成IN查询不能完成的功能的,可以使用更复杂的逻辑表达式进行查询,可以与子查询的多字段进行比较。
结论:
子表或查询数据记录较多时,EXISTS会较快,子表数据较少时,使用IN查询较快。
cjsaohan
2013-06-21 · TA获得超过204个赞
知道小有建树答主
回答量:290
采纳率:0%
帮助的人:234万
展开全部
由于exists和in的差异而造成的影响,远不及其它原因造成的影响,比如不当的Table Scan或者Cluster index Scan等
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-06-21
展开全部
(转):
IN
适合于外表大而
内表小的情况;
EXISTS
适合于外表小而内表大的情况。

我们要根据实际的情况做相应的优化,
不能绝对的说谁的效率高谁的效率低,
所有的事都是相对的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chineseai
2013-06-21
知道答主
回答量:20
采纳率:0%
帮助的人:4.9万
展开全部
exists的效率比IN高
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式