EXISTS
ブール値JOIN
を返すために使用されます 他のテーブル全体を返します
EXISTS
サブクエリが結果を返すかどうかをテストするためにのみ使用され、結果が返されるとすぐに短絡します。 JOIN
リレーションがある別のテーブルの追加フィールドと組み合わせて結果セットを拡張するために使用されます。
あなたの例では、クエリは意味的に同等です。
通常、EXISTS
を使用します いつ:
- 関連するテーブルからデータを返す必要はありません
- 関連するテーブルに重複があります(
JOIN
値が繰り返されると、行が重複する可能性があります) - 存在を確認したい(
LEFT OUTER JOIN...NULL
の代わりに使用 状態)
適切なインデックスがある場合、ほとんどの場合、EXISTS
JOIN
と同じように機能します 。例外は非常に複雑なサブクエリで、通常はEXISTS
を使用する方が高速です。 。
JOIN
の場合 キーはインデックスに登録されていないため、EXISTS
を使用する方が速い場合があります ただし、特定の状況をテストする必要があります。
JOIN
構文は読みやすく、通常も明確です。