2

EXISTSSQLが行の存在をチェックすることは理解していますが、式全体を評価しますか?たとえば、次のようになります。

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

このようなものよりも速くなります:

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

4 に答える 4

4

式がtrueと評価されるため、Existsは最初のヒット後に停止します。したがって、top(1)-partは不要です。

于 2011-01-19T14:40:03.480 に答える
3

どちらもまったく同じように実行する必要があります。SQL Serverは、これEXISTSが短絡操作であると見なし、戻り結果を評価せず、戻り結果があるかどうかを確認するだけです

于 2011-01-19T14:41:17.150 に答える
2

いいえ、ありません。

SQL ServerTOP評価する計画で使用しEXISTSます。

于 2011-01-19T14:40:55.800 に答える
2

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

于 2011-01-19T14:41:20.397 に答える