すべてのプロダクト
Search
ドキュメントセンター

PolarDB:OPT_PARAMヒント

最終更新日:Jun 05, 2024

このトピックでは、PolarDB for PostgreSQL (Compatible with Oracle) のOPT_PARAMヒントについて説明します。

特定のパラメーターの値は、データベースレベル、セッションレベル、またはユーザーレベルで指定できます。 この方法は伝統的です。 SQL文を実行する場合、その文の特定のパラメーターの値を制御することはできません。 この場合、OPT_PARAMヒントを使用して、SQL文の特定のパラメーターの値を指定できます。 このような値はSQL文でのみ有効です。

構文

SELECT /* + opt_param("enable_hashjoin" "off") 、opt_param("enable_mergejoin" "off") */ ...; 

パラメーター

OPT_PARAMヒントを使用すると、次のパラメーターの値を指定できます。

パラメーター

説明

enable_hashjoin

クエリプランナーがハッシュ結合プラン型を使用できるようにするかどうかを指定します。

enable_mergejoin

クエリプランナーがマージ-結合プランの種類を使用できるようにするかどうかを指定します。

enable_nestloop

クエリプランナーがネストループ結合プランを使用できるようにするかどうかを指定します。 入れ子ループ結合を完全に禁止することはできません。 ただし、このパラメーターを無効にすると、プランナーは他のメソッドに優先順位を付けます。

enable_bitmapscan

クエリプランナーがビットマップスキャンプランの種類を使用できるようにするかどうかを指定します。

enable_indexonlyscan

クエリプランナーがインデックスのみのスキャンプランタイプを使用できるようにするかどうかを指定します。

enable_indexscan

クエリプランナーがインデックススキャンプランの種類を使用できるようにするかどうかを指定します。

enable_material

クエリプランナーがマテリアライゼーションを使用できるようにするかどうかを指定します。 マテリアライゼーションを完全に禁止することはできません。 ただし、このパラメーターを無効にすると、プランナーはマテリアライズノードを挿入できません。

enable_seqscan

クエリプランナーがシーケンシャルスキャンプランの種類を使用できるようにするかどうかを指定します。 シーケンシャルスキャンを完全に禁止することはできません。 ただし、このパラメーターを無効にすると、プランナーは他のメソッドに優先順位を付けます。

enable_sort

クエリプランナーが明示的なソートステップを使用できるようにするかどうかを指定します。 明示的なソートを完全に禁止することはできません。 ただし、このパラメーターを無効にすると、プランナーは他のメソッドに優先順位を付けます。

enable_tidscan

クエリプランナーがTIDスキャンプランタイプを使用できるようにするかどうかを指定します。

enable_gathermerge

クエリプランナーが収集-マージプランの種類を使用できるようにするかどうかを指定します。

enable_hashagg

クエリプランナーがハッシュ集計プランの種類を使用できるようにするかどうかを指定します。

enable_parallel_append

クエリプランナーが並列対応の追加プランの種類を使用できるようにするかどうかを指定します。

enable_parallel_hash

クエリプランナーが並列ハッシュにハッシュ結合プラン型を使用できるようにするかどうかを指定します。 ハッシュ結合プランが有効になっていない場合、このパラメーターは有効になりません。

enable_partition_pruning

クエリプランからパーティション分割テーブルのパーティションを削除するクエリプランを有効にするかどうかを指定します。 また、クエリ・エグゼキュータがクエリ実行中にパーティションを削除 (無視) できるようにするクエリ・プランを生成するクエリ・プランナの能力も制御する。

enable_partitionwise_aggregate

クエリプランナーがパーティションごとのグループ化または集約を使用できるようにするかどうかを指定します。 GROUP BY句にパーティションキーが含まれていない場合、パーティションごとに実行できるのは部分的な集計のみであり、後でファイナライズを実行する必要があります。

enable_partitionwise_join

クエリプランナーがパーティションごとの結合を使用できるようにするかどうかを指定します。 現在、パーティションごとの結合は、結合条件にすべてのパーティションキーが含まれている場合にのみ適用されます。パーティションキーは、同じデータ型で、1対1の一致する子パーティションのセットである必要があります。

例:

OPT_PARAMヒントを使用しないでください:

EXPLAIN (コストオフ) SELECT * FROM sampletable WHERE x < 423;

OPT_PARAMヒントを使用し、enable_bitmapscanパラメーターをoffに設定して、ビットマップ-スキャンプランタイプを使用するようにクエリプランナーを無効にします。

EXPLAIN (コストオフ) SELECT /* + opt_param("enable_bitmapscan" "OFF") */ * FROM sampletable WHERE x < 423;

OPT_PARAMヒントを使用し、enable_mergejoinパラメーターをoffに設定して、クエリプランナーがmerge-joinプランタイプを使用することを無効にします。

説明 (コストオフ) SELECT /* + opt_param("enable_mergejoin" "OFF") */ tt1 * 、tt2 * FROM tt1 JOIN tt2 on tt1.joincol = tt2.joincol;

クエリプランナーがハッシュ結合プランタイプを使用できるようにするには、OPT_PARAMヒントを使用し、enable_hashjoinパラメーターをonに設定します。

説明 (コストオフ) SELECT/* + opt_param("enable_hashjoin" "on") */ tt1 * 、tt2 * FROM tt1 JOIN tt2 on tt1.joincol = tt2.joincol;