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