ヒントタイプ |
説明 |
|---|---|
USE_HASH_AGGREGATION |
ハッシュ集計の使用を強制します。逆操作は NO_USE_HASH_AGGREGATION です。 |
NO_USE_HASH_AGGREGATION |
ハッシュ集計の使用を回避します。逆操作は USE_HASH_AGGREGATION です。 |
GBY_PUSHDOWN |
2段階 GROUP BY プッシュダウンを有効に設定します。逆操作は NO_GBY_PUSHDOWN です。 |
NO_GBY_PUSHDOWN |
2段階 GROUP BY プッシュダウンを無効に設定します。逆操作は GBY_PUSHDOWN です。 |
DISABLE_OP_RICH_FORMAT |
計画内で op_list に指定された物理演算子をベクトル化1.0に戻します。 |
USE_HASH_AGGREGATION ヒント
USE_HASH_AGGREGATION ヒントは、オプティマイザーに対し、SQLステートメントの実行計画を生成する際に HASH 集計アルゴリズムの使用を強制するよう指示します。GROUP BY/DISTINCT で HASH AGGREGATE を使用するよう設定します。例:HASH GROUP BY、HASH DISTINCT。その逆操作は NO_USE_HASH_AGGREGATION です。
構文
/*+USE_HASH_AGGREGATION([qb_name]) */
例
-- USE_HASH_AGGREGATION ヒントを使用して、クエリオプティマイザーにハッシュ集計アルゴリズムの使用を強制し、集計計算を実行させます。
-- このクエリでは、これは e.department_id でグループ化した後の給与の合計がハッシュテーブルを使用して計算されることを意味します。
SELECT /*+ USE_HASH_AGGREGATION */ e.department_id, sum(e.salary)
FROM employees e
WHERE e.department_id = 1001
GROUP BY e.department_id;
NO_USE_HASH_AGGREGATION ヒント
NO_USE_HASH_AGGREGATION ヒントは、オプティマイザーに対し、SQLステートメントの実行時に HASH 集計アルゴリズムの使用を回避するよう指示します。GROUP BY/DISTINCT で HASH AGGREGATE を使用せず、MERGE GROUP BY、MERGE DISTINCT を使用します。その逆操作は USE_HASH_AGGREGATION です。
構文
/*+ NO_USE_HASH_AGGREGATION([qb_name]) */
例
-- NO_USE_HASH_AGGREGATION ヒントを使用して、クエリオプティマイザーにハッシュ集計アルゴリズムの使用を回避するよう指示します。
-- オプティマイザーは、e.department_id でグループ化した給与の合計計算を実行するために、ソート集計など他の集計方法を選択します。
SELECT /*+ NO_USE_HASH_AGGREGATION */ e.department_id, sum(e.salary)
FROM employees e
WHERE e.department_id = 1001
GROUP BY e.department_id;
GBY_PUSHDOWN ヒント
GBY_PUSHDOWN ヒントは、オプティマイザーに対し、可能な場合に GROUP BY 操作を分散データベース内の各データノードにプッシュダウンするよう指示します。これにより、各ノードは自身が保持するデータ部分について先にグループ化と集計を行い、その後、これらのローカル集計結果を中央ノードに送信して最終的な集計を完了します。その逆操作は NO_GBY_PUSHDOWN です。
構文
/*+ GBY_PUSHDOWN([qb_name]) */
例
SELECT /*+ GBY_PUSHDOWN */ department_id, COUNT(*) as emp_count
FROM employees
GROUP BY department_id;
NO_GBY_PUSHDOWN ヒント
NO_GBY_PUSHDOWN ヒントは GBY_PUSHDOWN ヒントとは逆で、オプティマイザーに対し GROUP BY 操作をデータノードにプッシュダウンせず、中央ノードでグループ化と集計の全プロセスを完了するよう指示します。その逆操作は GBY_PUSHDOWN です。
構文
/*+ NO_GBY_PUSHDOWN([qb_name]) */
例
SELECT /*+ NO_GBY_PUSHDOWN */ department_id, COUNT(*) as emp_count
FROM employees
GROUP BY department_id;
DISABLE_OP_RICH_FORMAT ヒント
DISABLE_OP_RICH_FORMAT ヒントは、プラン内で op_list に指定された物理演算子をベクトル化1.0に戻すために使用します。
構文
hint: disable_op_rich_format(op_list);
opt_list: op_name | op_list,op_name
op_name:
LIMIT
| MERGE_DISTINCT
| HASH_DISTINCT
| MATERIAL
| MERGE_JOIN
| GRANULE_ITERATOR
| EXPAND
| SORT
| HASH_UNION
| HASH_INTERSECT
| HASH_EXCEPT
| MERGE_UNION
| MERGE_INTERSECT
| MERGE_EXCEPT
| TABLE_SCAN
| HASH_JOIN
| NESTED_LOOP_JOIN
| SUBPLAN_FILTER
| SUBPLAN_SCAN
| UNPIVOT
| SCALAR_AGGREGATE
| MERGE_GROUP_BY
| HASH_GROUP_BY
| WINDOW_FUNCTION
例
SELECT /*+disable_op_rich_format('table_scan','hash_group_by')*/ * FROM t GROUP BY a;