[pgsql-jp: 30007] Re: SET STATISTICS の統計情報の目標値決定指標

sugita @ sra.co.jp sugita @ sra.co.jp
2003年 5月 20日 (火) 22:59:39 JST


  磯さん、今晩は。

From: "Iso, Toshitaka" <toshitaka.iso @ hp.com>
Subject: [pgsql-jp: 30005] Re: SET STATISTICS の統計情報の目標値決定指標
Date: Tue, 20 May 2003 22:33:39 +0900

;;; 区分値の割合を調べてみたところ、以下のようになりました。
;;; 
;;; 総件数と、Kubunごとの割合と、Index Scanをしてくれるのは、
;;; 割合が1%未満のものだけでした。

  興味深い調査結果をありがとうございます。こういうデータがあるとのめり込みたく
なります。

;;; 割合が少なくても持ってくる件数が多いと、Index Scanではなく
;;; Seq Scanになってしまうのでしょうか。

  データの分布傾向は影響します。極端な場合、一様乱数に近いと、PostgreSQL のオ
プティマイザは、インデックススキャンとシーケンシャルスキャンの予測コスト比較で
actual とかなり違う予測をしてしまいます。

  他には、7.3 迄では、IN 副問い合わせの予測コストも、実際と 1 桁以上合わなくな
ることが殆どで、効率を考えると、副問い合わせの使用にかなりの制約があるのは、と
てもアプリケーション側に辛いと思えます。

;;; このIndex Scanをしてくれる可能性を高める方法は、enable_Seq_scan
;;; のパラメータのみでしか制御は不可能でしょうか?

  PostgreSQL では、これは最後の手段です。あるいは、JOIN によるクエリーの書き換
えです。理想的な SQL 的にしたくはありませんが、実際的には、PostgreSQL は、
Oracle のようにどのインデックスを使うべきか迄の制御をユーザが制御できないのが
もどかしいです。

  完全な予測をできないのであれば、Oracle のように、使用者に実行計画の制御の手
段を与えるべきです。


Kenji Sugita                                      




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