我很好奇以下哪个更有效?
我一直对使用有点谨慎,IN
因为我相信 SQL Server 会将结果集变成一个大IF
语句。对于大型结果集,这可能会导致性能不佳。对于小型结果集,我不确定两者是否更可取。对于大型结果集,EXISTS
效率不是更高吗?
WHERE EXISTS (SELECT * FROM Base WHERE bx.BoxID = Base.BoxID AND [Rank] = 2)
对比
WHERE bx.BoxID IN (SELECT BoxID FROM Base WHERE [Rank = 2])