質問

私はその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番目の例は、私の意見では読みやすいです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top