他の人がすでに指摘しているように、相関サブクエリで EXISTS を使用することは、基本的にデータベース エンジンに「サブクエリで指定された基準を満たす対応するレコードがあるすべてのレコードを返す」ように指示することです。しかし、もっとあります。
EXISTS キーワードはブール値を表します。「WHERE ステートメントの条件に一致するレコードが少なくとも 1 つ存在する場所」という意味にも解釈できます。つまり、単一のレコードが見つかった場合、「完了したので、これ以上検索する必要はありません」ということです。
相関サブクエリで EXISTS を使用することで得られる効率の向上は、EXISTS が TRUE を返すとすぐにサブクエリがレコードのスキャンを停止し、結果を返すという事実から得られます。同様に、NOT EXISTS を使用するサブクエリは、いずれかのレコードがサブクエリの WHERE ステートメントの条件に一致するとすぐに戻ります。
EXISTS を使用したサブクエリは、ネストされたループ検索の使用を避けるためにサポートされているという考えだと思います。ただし、@Gordon Linoff が上記で述べているように、クエリ オプティマイザは、必要に応じて実行される場合と実行されない場合があります。通常、MS SQL Server は EXISTS を最大限に活用していると思います。
私の理解では、すべてのクエリが EXISTS の恩恵を受けるわけではありませんが、多くの場合、特に例のような単純な構造の場合は恩恵を受けます。
私はこれのいくつかを解体したかもしれませんが、概念的には正しい軌道に乗っていると信じています。
注意点は、パフォーマンスが重要なクエリがある場合は、Linoff 氏が示しているように、EXISTS を使用するバージョンと単純な JOINS を使用するバージョンの実行を評価するのが最善だということです。データベース エンジン、テーブル構造、時刻、および月と星の配置によっては、カット アンド ドライではない方が高速になります。
最後の注意 - lc に同意します。サブクエリで SELECT * を使用すると、パフォーマンスの向上の一部またはすべてが無効になる可能性があります。PK フィールドのみを選択します。