我想知道以下哪种方法更有效?
我一直对使用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
和from
之间的任何内容(除非您在其中放置另一个子查询或类似的东西...奇怪)。在我看来,语法应该是semi join table2 on ....
。 - George Menoutis