[pgsql-jp: 35820] Re: 同一テーブルのJONで一定数を超えると反応しなくなる

ITAGAKI Takahiro itagaki.takahiro @ lab.ntt.co.jp
2005年 8月 10日 (水) 10:47:03 JST


板垣です。

Shigeru Matsumoto <matsumoto @ zsd.co.jp> wrote:

>  join_collapse_limit = 1を設定しSQL文をjoinを使って書き直すと
>  すぐ返ってくる様になりました。
>  プランナが考えすぎているのでしょうか??

実際の問い合わせをせず、EXPLAIN のみでも時間がかかるでしょうか?
もしそうならば、プランナが考えすぎているという予想は当たりだと思います。

>  とりあえずこの方法で凌ごうとは思いますがSQLの書き換えが大変だ・・

遺伝的問い合わせオプティマイザを使わせてみるのはいかがでしょう?

| geqo_threshold (integer)
| 少なくともこれだけの数のFROM句の項目を含む問い合わせを計画する場合には、
| 遺伝的問い合わせ最適化を使用します(外部JOIN構文は1つのFROM句として数えられます)。
| デフォルトは12です。
| もっと単純な問い合わせでは、決定論的でしらみつぶし検索プランナを使うのが最適でしょう。
| しかし、多くのテーブルを持つ問い合わせでは、決定論的なプランナは非常に時間がかかります。 

ということなので、これを 8 に設定すれば良いように読めます。

# 個人的には、遺伝的オプティマイザの最適化の精度が興味深いです。
# 活躍している場面をあまり見たことがないので……。

------------------------------------------------------------
板垣貴裕 <itagaki.takahiro @ lab.ntt.co.jp>





pgsql-jp メーリングリストの案内