[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 メーリングリストの案内