sql查询效率
IN和exists我在网上搜索资料,看到很多人建议用exists代替in效率比较高,可我测试后发现并非如此,我想exists代替in的说法别人也肯定测试过,这让我感到有点...
IN和exists 我在网上搜索资料,看到很多人建议用exists代替 in 效率比较高,可我测试后发现并非如此,我想exists代替in的说法 别人也肯定测试过,这让我感到有点迷糊了 两者比较效率高低 这一说法是否正确?
展开
展开全部
我想是这样的,IN后面的子查询数据越多,相对EXISTS查询就会越慢。IN子查询中的记录只有几十条件,那么应该是效率很高的,因为其只查询单个字段,如果这个字段是被索引过的,会更快
EXISTS相对于查询子表数据较多的情况。
可以这样想,EXISTS每个子查询是一条记录。而IN子查询每个子查询会是多条甚至数万条记录。所以,子查询记录越多,IN的速度越慢。
但是,EXSITS是能完成IN查询不能完成的功能的,可以使用更复杂的逻辑表达式进行查询,可以与子查询的多字段进行比较。
结论:
子表或查询数据记录较多时,EXISTS会较快,子表数据较少时,使用IN查询较快。
EXISTS相对于查询子表数据较多的情况。
可以这样想,EXISTS每个子查询是一条记录。而IN子查询每个子查询会是多条甚至数万条记录。所以,子查询记录越多,IN的速度越慢。
但是,EXSITS是能完成IN查询不能完成的功能的,可以使用更复杂的逻辑表达式进行查询,可以与子查询的多字段进行比较。
结论:
子表或查询数据记录较多时,EXISTS会较快,子表数据较少时,使用IN查询较快。
展开全部
由于exists和in的差异而造成的影响,远不及其它原因造成的影响,比如不当的Table Scan或者Cluster index Scan等
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-21
展开全部
(转):
IN
适合于外表大而
内表小的情况;
EXISTS
适合于外表小而内表大的情况。
我们要根据实际的情况做相应的优化,
不能绝对的说谁的效率高谁的效率低,
所有的事都是相对的
IN
适合于外表大而
内表小的情况;
EXISTS
适合于外表小而内表大的情况。
我们要根据实际的情况做相应的优化,
不能绝对的说谁的效率高谁的效率低,
所有的事都是相对的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询