クエリ変換Hint(Stmt Transform Hint)は、SQLクエリ内で特定のクエリ変換操作を制御することを可能にします。
| Hintタイプ | 説明 |
|---|---|
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と組み合わせて使用することで、特定のタイプのクエリ書き換えを許可することができます。たとえば、外部クエリブロックで NO_REWRITE Hintを使用していても、内部クエリブロックで MERGE Hintを使用することで、ビュー結合の書き換えを指定できます。
-- 外部クエリはNO_REWRITE Hintを使用しているため、自動書き換えは行われません
SELECT /*+ NO_REWRITE */
*
FROM
(SELECT /*+ MERGE */ * FROM t1) -- 内部クエリはMERGE Hintを使用しており、ビュー結合の書き換えを強制的に実行
WHERE
t1.column1 = 'somevalue';