[pgsql-jp: 32974] Re: 問い合わせの速度低下
Tatsuo Ishii
t-ishii @ sra.co.jp
2004年 5月 19日 (水) 11:46:33 JST
石井です.
> > ところで,「どんどん遅くなる」では良く状況がわかりませんので,EXPLAIN
> > ANALYZEの結果を速いときと遅いときの両方で見せてもらえませんか?
>
> 試したクエリ
>
> SELECT COUNT( * )
> FROM T_RESULT
> WHERE TIME_SMPL > '2004-05-16 09:00:00' AND
> TIME_SMPL <= '2004-05-17 09:00:00' AND
> CHECK_ID = 256 AND
> CHECK_SUB = 0
> ;
>
> 実行プラン
>
> Aggregate (cost=656.84..656.84 rows=1 width=0)
> -> Index Scan using i_result_3 on t_result (cost=0.00..656.43 rows=166
> width=0)
> Index Cond: ((check_id = 256) AND (check_sub = 0) AND
> (time_smpl > '2004-05-16 09:00:00'::timestamp without time zone)
> AND
> (time_smpl <= '2004-05-17 09:00:00'::timestamp without time zone))
>
EXPLAINではなく,EXPLAIN ANALYZEの結果が見たかったのですが.EXPLAIN
ANALYZEではオプティマイザの見積もりと実際の差異を見られるので,別の方
がフォローしていたように,統計情報の取得が適切かどうか,あるいはインデッ
クスのはりかたが適切かどうかの判断ができます.
> 昨日までは、VACUUMするとクエリの実行プランでのインデックスの使い方が
> 時々変化していたのですが、今日は落ち着いたようです。
> 今までは、TIME_SMPLだけのインデックスを使って、CHECK_IDやCHECK_SUBがFilterに
> なっていたりとか、逆にCHECK_IDとCHECK_SUBの複合インデックスを使って、
> TIME_SMPLがFilterになったりしていたので、パフォーマンスの変化はこれが原因
> だったのでしょうか。。
Filterになってしまうと非常に遅くなりますが,その回避方法はケースバイケー
スなので「遅いとき」のEXPLAIN ANALYZEの結果を見せていただけないと良く
分かりません.postgresql.confの設定も関係します.
--
Tatsuo Ishii
pgsql-jp メーリングリストの案内