ヒントタイプ |
説明 |
|---|---|
DECORRELATE |
lateralテーブルに対する非結合クエリのリライトを有効にします。逆操作はNO_DECORRELATEです。 |
NO_DECORRELATE |
lateralテーブルに対する非結合クエリのリライトを無効にします。逆操作はDECORRELATEです。 |
DECORRELATE Hint
DECORRELATE Hintは、クエリ内のlateralテーブルに対する非相関化クエリ変換を有効にするために使用されます。非相関化とは、外部クエリに依存する相関サブクエリ(correlated subquery)を独立したクエリまたは非相関サブクエリに変換することです。
DECORRELATE Hintの逆操作はNO_DECORRELATE Hintであり、lateralテーブルに対する非相関化クエリ変換を無効にするために使用されます。
構文
/*+ DECORRELATE [ ( [ @ qb_name ] ) ] */
パラメータの説明
@qb_name:オプションです。非相関化変換を禁止するクエリブロック名を指定します。
例
以下のクエリ例では、DECORRELATE Hintを使用して、クエリ内のlateralテーブルに対する非相関化クエリ変換を有効にします。
-- `NO_MERGE` Hintと`DECORRELATE`を組み合わせて使用することで、サブクエリが外部クエリとマージされないようにし、オプティマイザーにサブクエリの非相関化を明示的に要求します。
SELECT *
FROM t1, LATERAL (SELECT /*+ NO_MERGE DECORRELATE */ *
FROM t2
WHERE t2.c2 = t1.c1) v
WHERE v.c1 = 1;
NO_DECORRELATE Hint
DECORRELATE Hintの逆操作であり、NO_DECORRELATE Hintは、lateralテーブルに対する非相関化クエリ変換を無効にするために使用されます。
構文
/*+ NO_DECORRELATE [ ( [ @ qb_name ] ) ] */
パラメータの説明
@qb_name:オプションです。非相関化クエリ変換を禁止するクエリブロック名を指定します。
例
以下のクエリ例では、NO_DECORRELATE Hintを使用して、lateralテーブルの非相関化クエリ変換を無効にします。
-- `NO_MERGE` Hintと`NO_DECORRELATE`を併用することで、オプティマイザーがサブクエリを外部クエリにマージしないようにし、同時に非相関化クエリ変換も行わないようにします。
SELECT *
FROM t1, LATERAL (SELECT /*+ NO_MERGE NO_DECORRELATE */ *
FROM t2
WHERE t2.c2 = t1.c1) v
WHERE v.c1 = 1;