2011-01-19 10 views
2

私はSQL EXISTSが行の存在をチェックすることを理解しますが、式全体を評価しますか?したがって、たとえば、このようなものでしょう:SQL EXISTSのパフォーマンス

IF EXISTS (SELECT TOP 1 1 FROM table WITH (NOLOCK)) 
BEGIN 
    ... 
END 

速く、このようなものよりも:

IF EXISTS (SELECT 1 FROM table WITH (NOLOCK)) 
BEGIN 
    ... 
END 
+2

クエリ実行プランを実行して見てみましょう –

+1

はい、私はやったし、まったく同じです。 – Bmw

答えて

3

これらはどちらも同じに動作するはずです。 SQL ServerはEXISTSが短絡操作であることを考慮に入れ、返された結果を評価しません。の返品結果を確認します。

4

が存在しますが、その後式がtrueに評価されるため最初のヒットの後に停止し、そのトップ(1う)-partは不要です。

2

いいえ、そうではありません。

SQL Serverは、EXISTSを評価する予定でTOPを使用しています。

2

ステートメントは同じクエリプランを生成するので、違いはありません。 2番目の例は、私の意見では読みやすいです。