SQLはパフォーマンスが存在します
-
12-10-2019 - |
質問
私はその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)パートは不要です。
いいえ、そうしません。
SQL Server
使用します TOP
評価する計画で EXISTS
.
ステートメントは同一のクエリ計画を生成するため、違いはありません。 2番目の例は、私の意見では読みやすいです。
所属していません StackOverflow