[pgsql-jp: 40526] Re: ご質問m(_ _)m

Itagaki Takahiro itagaki.takahiro @ gmail.com
2010年 11月 10日 (水) 00:15:47 JST


2010/11/9 額田 正一郎 <kyu-0705 @ pstc.jp.panasonic.com>:
> 実際、Javaソースで該当する場合を「PreparedStatement」に書換えを行い
> 実施しましたが然程効果がでませんでした。(;_;)
> 約2~3秒程度は、速くなりましたがまだ10秒前後はかかってしまいます。

勘違いしているような気がするんですが、PreparedStatement は
パースを高速化する機能ではなく、パースの結果をキャッシュし、
2回目以降のパースをスキップするためのものです。そのため、
似たようなクエリを複数回使うようなパターンでないと効果がありません。
また、JDBC のデフォルトだと5回以上使ったクエリだけ
PREPARE するので、パラメータを調整する必要があるかもしれません。

ところで、それにしてもパースだけで 500ms というのは、めったに
無いほど遅いです。何か特殊なスキーマ構成をしているのでしょうか?
……と思ったら、最初のメールに少し気になることがありました。

> 最大インデックス数 ・・ 98個

もし1つのテーブルに98個もインデックスがあるならば、本件との
関係が疑えます。使われないインデックスを間引くと速くなるかも
しれません。その他、テーブル数(特にSQL中のテーブル数や
継承テーブル数)や、SQLの文字数など、何か特徴的な使い方があれば
そこから解析できるかもしれません。

-- 
Itagaki Takahiro


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