クエリ変換Hint(Stmt Transform Hint)は、SQLクエリ内で特定のクエリ変換操作を制御することを許可します。
ヒントタイプ |
説明 |
|---|---|
NO_REWRITE |
クエリのいかなる形式でのリライトも禁止します。 |
NO_REWRITE Hint
NO_REWRITE Hintは、クエリ内でのリライトを禁止するために使用されます。このHintを使用すると、影響を受けるクエリブロック(Query Block)は、いかなるクエリ変換操作にも参加しません。
構文説明
/*+ NO_REWRITE [ ( [ @ qb_name ] ) ] */
パラメータの説明
@qb_name:オプションです。NO_REWRITE属性を適用するクエリブロック名を指定するために使用します。クエリブロック名が指定されていない場合、HintはSQL文全体に影響します。
例
-- 以下のクエリでは、NO_REWRITE Hintが追加されているため、ビュー結合の変換は行われません。
SELECT /*+ NO_REWRITE */ * FROM (SELECT * FROM t1);
NO_REWRITE Hintはクエリのリライトを禁止するために使用されますが、他のクエリ変換Hintと組み合わせて使用することで、特定のタイプのクエリ変換を許可することができます。例えば、内部クエリブロックで MERGE Hintを使用することで、外部クエリブロックで NO_REWRITE Hintを使用していてもビュー結合の変換を指定できます。
-- 外部クエリでNO_REWRITE Hintが使用されているため、自動変換は行われません
SELECT /*+ NO_REWRITE */
*
FROM
(SELECT /*+ MERGE */ * FROM t1) -- 内部クエリでMERGE Hintが使用されており、ビュー結合の変換を強制的に実行します
WHERE
t1.column1 = 'somevalue';