Мне любопытно, какое из следующих ниже было бы более эффективным?
Я всегда был немного осторожен в использовании IN
, потому что я считаю, что SQL Server превращает результирующий набор в большой оператор IF
. Для большого набора результатов это может привести к низкой производительности. Для небольших наборов результатов я не уверен, что это предпочтительнее. Для больших результирующих наборов не будет более эффективным EXISTS
?SQL Server IN против 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])
Лучший способ выяснить это попробовать и сделать некоторые meassurements. –
там ** получил **, чтобы быть gazillion дубликаты для этого ...... –
@marc_s: да, но я думаю, что это действительно зависит от случая. На мой взгляд, канонический ответ - это клаусбыковский (или тот, кто может претендовать на уровень техники). – RedFilter