| ヒント名 | 説明 |
|---|---|
BEGIN_OUTLINE_DATA |
アウトラインデータの開始マークです。 |
END_OUTLINE_DATA |
アウトラインデータの終了マークです。 |
QB_NAME |
クエリブロックに名前を指定し、他のヒントで参照できるようにします。 |
OPTIMIZER_FEATURES_ENABLE |
クエリ計画生成オプティマイザーのバージョンです。 |
OUTLINE DATA構造
OUTLINE DATAは、クエリの最適化プロセスにおけるヒント情報を識別するために使用されます。有効なOUTLINE DATA構造の例は以下のとおりです:
SELECT /*+PARALLEL(2)*/ 1
FROM (SELECT c2 FROM t1 WHERE c1 = 1) v, t2
WHERE t2.c2 = v.c2;
/*+
BEGIN_OUTLINE_DATA
// 最適化ヒント
LEADING(@"SEL$6D1A4751" ("TEST.T1"@"SEL$2" "TEST.T2"@"SEL$1"))
USE_HASH(@"SEL$6D1A4751" "TEST.T2"@"SEL$1")
PQ_DISTRIBUTE(@"SEL$6D1A4751" "TEST.T2"@"SEL$1" NONE BROADCAST)
PX_JOIN_FILTER(@"SEL$6D1A4751" "TEST.T2"@"SEL$1")
FULL(@"SEL$6D1A4751" "TEST.T1"@"SEL$2")
FULL(@"SEL$6D1A4751" "TEST.T2"@"SEL$1")
// 変換ヒント
MERGE(@"SEL$2" > "SEL$1")
// グローバルヒント
OPTIMIZER_FEATURES_ENABLE('4.0.0.0')
PARALLEL(2)
END_OUTLINE_DATA
*/
BEGIN_OUTLINE_DATA と END_OUTLINE_DATA の間のヒント情報に、OPTIMIZER_FEATURES_ENABLE ヒントが含まれており、有効なオプティマイザーのバージョンが指定されている場合、これらのヒントはOUTLINE DATAとして認識されます。
OPTIMIZER_FEATURES_ENABLE ヒント
OPTIMIZER_FEATURES_ENABLE ヒントは、現在のクエリで使用されるオプティマイザーのバージョンを指定するために使用されます。
構文
/*+ OPTIMIZER_FEATURES_ENABLE ( version_number ) */
パラメータの説明
version_number:オプティマイザーのバージョンです。
例
-- OPTIMIZER_FEATURES_ENABLE ヒントを使用して、実行計画を生成する際にオプティマイザーが使用するバージョンを4.0.0.0と指定します
SELECT /*+ OPTIMIZER_FEATURES_ENABLE('4.0.0.0') */ employee_id, last_name
FROM employees
WHERE last_name = 'Smith';
QB_NAME ヒント
QB_NAME ヒントは、クエリブロックに名前を指定することを可能にし、その後他のヒントでそのクエリブロックを参照できるようにします。これにより、クエリの特定の部分に対してより細かい制御を必要とする場合に非常に便利です。
詳細については、Query Block NameとQB_NAMEヒントを使用したクエリの最適化の制御を参照してください。
構文
/*+ QB_NAME(queryblock) */
パラメータの説明
qb_nameは大文字と小文字を区別せず、特殊文字を含むことはできません。長さの上限は20です。
使用方法と注意点
QB_NAME は、次のシナリオでは無効です:
- 同じ階層のクエリで複数の有効な
qb_nameを指定した場合。 - 異なる階層のクエリで同じ
qb_nameを指定した場合。
例
-- QB_NAME ヒントを使用してクエリブロックに 'qb' という名前を付け、FULL ヒントを使用してemployeesテーブルに対するフルスキャンを強制的に実行します
SELECT /*+ QB_NAME(qb) FULL(@qb e) */ employee_id, last_name
FROM employees e
WHERE last_name = 'Smith';