私は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
私は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
これらはどちらも同じに動作するはずです。 SQL ServerはEXISTS
が短絡操作であることを考慮に入れ、返された結果を評価しません。がの返品結果を確認します。
が存在しますが、その後式がtrueに評価されるため最初のヒットの後に停止し、そのトップ(1う)-partは不要です。
いいえ、そうではありません。
SQL Server
は、EXISTS
を評価する予定でTOP
を使用しています。
ステートメントは同じクエリプランを生成するので、違いはありません。 2番目の例は、私の意見では読みやすいです。
クエリ実行プランを実行して見てみましょう –
はい、私はやったし、まったく同じです。 – Bmw