pg_hint_plan 1.1.0


Appendix A. ヒント句一覧

pg_hint_planで指定できるヒント句は以下の通りです。

グループヒント句の書式説明
スキャン方式 SeqScan(テーブル) 指定したテーブルについて、Seq Scanを選択します。
TidScan(テーブル) 指定したテーブルについて、Tid Scanを選択します。検索条件にctidを指定した場合にのみ有効です。
IndexScan(テーブル[ インデックス...]) 指定したテーブルについて、Index Scanを選択します。インデックスも指定した場合は、指定したインデックスの中でコストが最小となるIndex Scanを選択します。ただし、インデックスが存在しない場合や指定したインデックスがWHERE句やJOIN条件などに関連しない場合はSeq Scanを選択します。
継承関係の親テーブルとそのテーブルのインデックスを指定した場合は、子テーブルに対してそのインデックスと同様の定義のインデックスを選択します。
IndexOnlyScan(テーブル[ インデックス...]) 指定したテーブルについて、Index Only ScanとIndex Scanのうちコストが最小となるスキャン方式を選択します。インデックスも指定した場合は、指定したインデックスの中でIndex Only ScanとIndex Scanのうちコストが最小となるスキャン方式を選択します。ただし、インデックスが存在しない場合や指定したインデックスがWHERE句やJOIN条件などに関連しない場合はSeq Scanを選択します。また、これらの場合以外にも、インデックスが持つ値だけでなくテーブルの値も必要な場合はIndex Scanを選択します。
継承関係の親テーブルとそのテーブルのインデックスを指定した場合は、子テーブルに対してそのインデックスと同様の定義のインデックスを選択します。 PostgreSQL 9.2以降で動作します。
BitmapScan(テーブル[ インデックス...]) 指定したテーブルについて、Bitmap Scanを選択します。インデックスも指定した場合は、指定したインデックスの中でコストが最小となるインデックスを選択します。ただし、インデックスが存在しない場合や指定したインデックスがWHERE句やJOIN条件などに関連しない場合はSeq Scanを選択します。
継承関係の親テーブルとそのテーブルのインデックスを指定した場合は、子テーブルに対してそのインデックスと同様の定義のインデックスを選択します。
IndexScanRegexp(テーブル[ POSIX正規表現...])
IndexOnlyScanRegexp(テーブル[ POSIX正規表現...])
BitmapScanRegexp(テーブル[ POSIX正規表現...])
テーブルのみを指定した場合のスキャン方式の選択基準は、Regexpの付かないスキャン方式のヒントと同じです。POSIX正規表現も指定した場合は、指定したPOSIX正規表現パターンに一致するインデックスの中でコストが最小となるスキャン方式を選択します。指定したテーブルが継承テーブルの場合は、子テーブルについても同じ基準で、使用するインデックスとスキャン方式を選択します。IndexOnlyScanRegexpヒントはPostgreSQL 9.2以降で動作します。
NoSeqScan(テーブル) 指定したテーブルについて、Seq Scan以外でコストが最小となるスキャン方式を選択します。ただし、他のスキャン方式を選択できない場合は、Seq Scanを選択します。
NoTidScan(テーブル) 指定したテーブルについて、Tid Scan以外でコストが最小となるスキャン方式を選択します。
NoIndexScan(テーブル) 指定したテーブルについて、Index ScanとIndex Only Scanを除いたスキャン方式の中でコストが最小となるスキャン方式を選択します。
NoIndexOnlyScan(テーブル) 指定したテーブルについて、Index Only Scan以外でコストが最小となるスキャン方式を選択します。PostgreSQL 9.2以降で動作します。
NoBitmapScan(テーブル) 指定したテーブルについて、Bitmap Scan以外でコストが最小となるスキャン方式を選択します。
結合方式 NestLoop(テーブル テーブル[ テーブル...]) 指定したテーブル間の結合にNested Loopを選択します。
HashJoin(テーブル テーブル[ テーブル...]) 指定したテーブル間の結合にHash Joinを選択します。
MergeJoin(テーブル テーブル[ テーブル...]) 指定したテーブル間の結合にMerge Joinを選択します。
NoNestLoop(テーブル テーブル[ テーブル...]) 指定したテーブル間の結合にNested Loop以外の結合方式を選択します。
NoHashJoin(テーブル テーブル[ テーブル...]) 指定したテーブル間の結合にHash Join以外の結合方式を選択します。
NoMergeJoin(テーブル テーブル[ テーブル...]) 指定したテーブル間の結合にMerge Join以外の結合方式を選択します。
結合順序 Leading(テーブル テーブル[ テーブル...]) 指定したテーブルを指定した順番通りに結合します。
Leading((テーブル集合注1 テーブル集合注1)) 1つ目に指定したテーブル集合を外部表として、2つ目に指定したテーブル集合を内部表として結合します。
GUCパラメータ Set(GUCパラメータ 値) そのクエリの実行計画を作成している間だけ、指定したGUCパラメータを指定した値に変更します。

注1テーブル集合とは、以下のような記述を指しています。
テーブル集合 = {テーブル|(テーブル集合 テーブル集合)}