グローバルHintタイプのTransformHintは、オプティマイザーに対し、クエリ全体をどのように処理または変換するかを指示するためのヒントです。
| ヒント名 | 説明 |
|---|---|
NO_QUERY_TRANSFORMATION |
クエリのいかなる書き換えも禁止します。 |
NO_COST_BASED_QUERY_TRANSFORMATION |
コストに基づくクエリの書き換えを禁止します。 |
NO_QUERY_TRANSFORMATION ヒント
NO_QUERY_TRANSFORMATION ヒントは、現在のクエリに対するいかなるクエリ変換も禁止します。Query Block HintのNO_REWRITEヒントとは異なり、NO_QUERY_TRANSFORMATIONを使用してもQuery Block Hintで有効にされている一部の変換を有効にすることはできません。
クエリ変換に関する詳細は、クエリ変換の概要を参照してください。
構文
/*+ NO_QUERY_TRANSFORMATION */
例
-- `NO_QUERY_TRANSFORMATION` ヒントを使用して、いかなるクエリ変換も禁止します。
SELECT /*+ NO_QUERY_TRANSFORMATION */ *
FROM (SELECT * FROM t1) v WHERE v.c1 = 3;
NO_COST_BASED_QUERY_TRANSFORMATION ヒント
NO_COST_BASED_QUERY_TRANSFORMATION ヒントは、現在のクエリに対するコストベースのクエリ変換をすべて禁止します。コストベースのクエリ変換の詳細については、コストベースの変換の紹介を参照してください。
構文
/*+ NO_COST_BASED_QUERY_TRANSFORMATION */
例
-- `NO_COST_BASED_QUERY_TRANSFORMATION` ヒントを使用して、コストベースのクエリ変換をすべて禁止します。
CREATE TABLE t1(c1 int, c2 int, c3 int, index idx1(c1), index idx2(c2));
SELECT /*+ NO_COST_BASED_QUERY_TRANSFORMATION */ *
FROM t1
WHERE c1 = 1 OR c2 = 1;