[pgsql-jp: 29346] Re: パフォーマンス向上策
sugita @ sra.co.jp
sugita @ sra.co.jp
2003年 3月 9日 (日) 20:24:26 JST
杉田です。
From: Tsunehisa Kazawa <kazawa @ ca2.so-net.ne.jp>
Subject: [pgsql-jp: 29334] Re: パフォーマンス向上策
Date: Sun, 9 Mar 2003 18:11:45 +0900
;;; 2) SQL が原因の場合は同じ結果が得られるいろいろなパターンのやり方をひ
;;; たすら explain や実時間レベルで比較して
;;; 地道にチューニングしていました。
特定のクエリーが問題の場合にはこれで、それもやり尽くすと、処理フローの見直し
でしょうか。
;;; 具体的には例えば in や or は遅いので
他のパターンもあったと思いますが、少なくとも IN (SELECT 外部参照なし) は
7.4devel での改良で、クエリーを書き換えずに済むくらいに速くなっています。
;;; exists に置き換えるとか、
バージョンは 7.2 ででしたが、EXIST (SELECT 外部参照) が遅くて、書き換えなけ
ればならないことがありました。DB2 で、同じデータで試すと、よいプランを出して、
速度も書き換えずに済む程度に速かったです。
;;; カーディナリティが低いフィールドを探索する
;;; select を止めて別テーブルにする、
やはりこれになりますか。
単純な検索での例でしかありませんが、int で、カーディナリティ 2 の場合に、10
万ずつ別テーブルに分けて、継承で親を作ってまとめても扱えるようにした場合に、子
テーブルそれぞれの全検索が 25% 速くなりました。また、10 万レコード、int で、カー
ディナリティが 3 の場合に、クラスタ化すると最初の 2 つのそれぞれの全検索は、
12% 前後速くなりましたが、3 つめが 9.5% 遅くなりました。
Kenji Sugita
pgsql-jp メーリングリストの案内