ヒント名 |
説明 |
|---|---|
BEGIN_OUTLINE_DATA |
outline data開始フラグ。 |
END_OUTLINE_DATA |
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';