以下のどれがより効率的か興味があります。
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])
ベストアンサー1
EXISTS
エンジンがヒットを見つけると、条件が満たされたと証明されて検索を停止するため、処理が速くなります。
を使用するとIN
、さらに処理する前にサブクエリからのすべての結果を収集します。