我很好奇以下哪个会更有效?
我一直对使用它持谨慎态度,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])
select 1 from Base...
,where exists
因为您实际上并不关心结果,只是实际上存在一行。