我很好奇下面哪一个会更有效?
我一直对使用有点谨慎IN
因为我相信 SQL Server 将结果集变成一个大的IF
陈述。对于大型结果集,这可能会导致性能不佳。对于小型结果集,我不确定哪一个更好。对于大型结果集,不会EXISTS
更有效率吗?
WHERE EXISTS (SELECT * FROM Base WHERE bx.BoxID = Base.BoxID AND [Rank] = 2)
vs.
WHERE bx.BoxID IN (SELECT BoxID FROM Base WHERE [Rank = 2])
EXISTS
会更快,因为一旦引擎发现命中,它就会停止寻找,因为条件已被证明是正确的。
With IN
,它将在进一步处理之前收集子查询的所有结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)