pg_hint_plan

PostgreSQLにHINT句相当の機能を追加するHOOK、pg_hint_planをこっちでも使ってみた。

pg_hint_planに関しては藤井さんのブログに分かりやすい使いかたが載っているので、手元の環境でさくっと試してみた。
(今週末のJPUG勉強会でも藤井さんが1セッション使って説明してくれるっぽい。ただし今回の勉強会は私は都合により参加できず・・・)

とりあえず軽く使ってみた感触としては・・・

  • 複数のインデクスを使う条件式があるときには、それなりに有効そう。
    • 全文検索インデクスと通常のbtreeインデクスが同時に使われる条件式で、全文検索インデクス側を確実に使わせたいようなケースなんかは使えそう。
  • 単一のインデクスしか使わない複雑な式がAND/OR接続されている場合には効果はない(指定単位がテーブル or インデクスだから)。
  • 結合順序を制御できるのは結構有用そう。
    • モデルを作るのが面倒だから、まだあまり検証できていないけど。

pg_hint_planがどう実装されているかはまだ未調査。
HINT用のコメントに優先させるプラン演算子、テーブル、インデクス名を記述するから、プランなが作成したいくつかのプラン群から、コメントに指定したプラン演算子、テーブル、インデクス名に対応していないプランを除外するような実装になっているのかなあ・・・。
このへんの実装がどうなっているのかは、本当はJPUG勉強会で藤井さんに聞いてみたかった。