Мне любопытно, что из следующего было бы более эффективным?
Я всегда был немного осторожен в использовании, 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
поскольку на самом деле вам не важны результаты, а просто то, что строка действительно существует.