2010年11月 9日

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

片岡です。

PostgreSQLはSQL文のパースがお世辞にも速いとは言えません。特に複雑長大なSQL文では顕著に遅いです。

Prepared Statementを使うのが順当な対策ですが、それが使いにくい構成(1度のセッションで1回しか呼ばないなど)の場合には、特に時間のかかるSQL文をSQL関数に仕立て、実行時にはそれを呼び出すようにしてみてください。パースの時間がかかる部分はCREATE
FUNCTIONの時点で済んでしまうので効果的です。

(多少なりともSQL関数を呼び出すオーバーヘッドがあるでしょうから、特に遅いSQL文だけをSQL関数にすることをお勧めします。)


2010年11月8日19:45 額田 正一郎 <kyu-0705@xxxxx>:
> どうも、PostgreSQLのSELECTの解析(パース)にて時間がかかっている
> ことがわかりました。
>
> 平均で500ミリ秒程度
> バインド、実行には殆ど時間を要していません。
> (0.10〜0.80ミリ秒)
>
> SELECTの解析(パース)に時間がかかると言うことはSQL文の
> 構成がまずいと言うことになるのでしょうか?
> (SQL文はOracle環境で動作していたものを
> PostgreSQLで動作する様に修正をかけたもの)
>
> もし、環境設定等で対応することは可能なのでしょうか?

--
Hiroki Kataoka

投稿者 xml-rpc : 2010年11月 9日 22:44
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/99995
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。