Ich bin gespannt, welche der folgenden Möglichkeiten effizienter ist.
Ich war immer etwas vorsichtig bei der Verwendung, IN
weil ich glaube, dass SQL Server die Ergebnismenge in eine große IF
Aussage verwandelt . Bei einer großen Ergebnismenge kann dies zu einer schlechten Leistung führen. Bei kleinen Ergebnismengen bin ich mir nicht sicher, ob dies auch vorzuziehen ist. Wäre es für große Ergebnismengen nicht EXISTS
effizienter?
WHERE EXISTS (SELECT * FROM Base WHERE bx.BoxID = Base.BoxID AND [Rank] = 2)
vs.
WHERE bx.BoxID IN (SELECT BoxID FROM Base WHERE [Rank = 2])
select 1 from Base...
in Ihrem where exists
da Sie eigentlich gar nicht über die Ergebnisse kümmern, nur , dass eine Reihe tatsächlich existiert.