我很好奇下面哪一个会更有效率?
对于使用 IN
,我一直比较谨慎,因为我相信 SQLServer 会将结果集转换成一个大的 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])