グローバルヒントの種類におけるTransformヒントは、オプティマイザーに対してクエリ全体の処理方法や変換方法を指示するヒントです。
ヒント名 |
説明 |
|---|---|
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;