デバッグオプションをつけてコンパイル
上のリンク先の「PostgreSQL研究所」の5回目ではOPTIMIZER_DEBUGの設定にソースコードを修正していたのですが、「PostgreSQLの内部構造」のプランナの説明ではconfigureへのパラメータで設定していたのでそっちを参考にしました。こうするのがよさげです。
cd /usr/local/src/postgresql-8.3.5 CFLAGS=-DOPTIMIZER_DEBUG ./configure --enable-debug make make install
OPTIMIZER_DEBUGをつけておくと、allpaths.cのdebug_print_rel(root, rel)で実行プランがログ出力されるようになります。こんな感じで出力されます。まだ、意味は把握できていない。
RELOPTINFO (1): rows=1130 width=42 path list: SeqScan(1) rows=1130 cost=0.00..21.30 cheapest startup path: SeqScan(1) rows=1130 cost=0.00..21.30 cheapest total path: SeqScan(1) rows=1130 cost=0.00..21.30
ほかにもこういったデバッグ用のオプションがあるんだろうな。