このトピックでは、pg_hint_plan拡張機能について説明します。 拡張機能を使用して、SQL文にヒントを追加できます。 ヒントは、SQL文の実行方法を指定します。 これにより、SQL文の実行計画を最適化できます。
背景情報
PolarDB for PostgreSQL (Compatible with Oracle) は、静的ルールではなくデータ統計を利用するコストベースのオプティマイザを使用します。 オプティマイザは、SQL文のすべての可能な実行計画のコストを評価し、最も低いコストで実行計画を実行します。 オプティマイザは最善の努力をしますが、オプティマイザはデータ間の基礎となる関係を考慮しないため、選択された実行計画は最善の計画ではない可能性があります。
Grand Unified Scheme (GUC) 変数を指定して実行計画を調整できますが、これはセッション全体に影響します。 セッション全体に影響を与えたくない場合は、pg_hint_plan拡張機能を使用して、単一の実行プランを最適化できます。
注意事項
データ管理 (DMS) はヒントをサポートしていません。 データベースにアクセスするには、他の方法を使用する必要があります。
pg_hint_plan拡張機能は、最初のコメントブロックからのみヒントを読み取ります。
pg_hint_plan拡張機能は、文字、数字、スペース、および特定の特殊文字のみを受け入れ、他の文字を識別するとすぐに解析を停止します。 受け入れられた特殊文字には、_、()
pg_hint_plan拡張機能は、オブジェクト名を大文字と小文字を区別して比較します。これは、PostgreSQLがオブジェクト名を比較する方法とは異なります。 たとえば、ヒント内のTBLという名前のオブジェクトは、データベース内のTBLのみに一致します。 tblまたはTblという名前のオブジェクトは無視されます。
制限事項
PL/pgSQLを使用して定義されたストアドプロシージャにpg_hint_plan拡張機能を使用するには、次の制限があります。
pg_hint_plan拡張機能の作成と読み込み
エクステンションを作成します。
CREATE EXTENSION pg_hint_plan;
エクステンションをロードします。