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