sql >> データベース >  >> RDS >> Oracle

アンチジョインは左アウタージョインよりも効率的ですか?

    SQLクエリで「notexists」または「notin」を使用する場合、Oracleにマージアンチジョインまたはハッシュアンチジョインアクセスパスを選択させることができます。

    簡単な説明

    たとえば、テーブルAとBの間の結合(A.x =B.xのA結合Bから)が与えられた場合、OracleはテーブルAからすべての関連データをフェッチし、それらをテーブルBの対応する行と照合しようとするため、テーブルの選択性に厳密に依存します。述語。

    反結合最適化を使用する場合、Oracleは選択性の高いテーブルを選択し、それを他のテーブルと一致させることができます。これにより、コードが大幅に高速化される可能性があります。

    テーブルAとテーブルBの間の1つの一致がその行を返すのに十分であると想定できないため、通常の結合またはサブクエリではそれを行うことはできません。

    関連するヒント: HASH_AJ、MERGE_AJ。

    詳細:

    これ このテーマに関するすばらしい詳細な記事のように見えます。

    こちら もう1つの、よりデンセットな記事です。



    1. postgresqlの文字列リテラルとエスケープ文字

    2. promiseを使用してnode.jsのMySQL戻り値を処理します

    3. Oracleでタイムゾーンを変換する方法は?

    4. LaravelEloquentがnullを返すことを見つける