カタログpg_statisticには、データベースの内容に関する統計データが格納されます。 エントリはANALYZEによって作成され、その後クエリプランナーによって使用されます。 すべての統計データは、それが最新であると仮定しても、本質的に近似であることに留意されたい。
通常、分析されたテーブル列ごとに、stainherit=falseのエントリが1つあります。 テーブルに継承子がある場合、stainherit=trueの2番目のエントリも作成されます。 この行は、継承ツリー上の列の統計、つまりSELECTFROM * で表示されるデータの統計を表します。一方、stainherit=false行は、SELECTFROMのみの結果を表します。
pg_statisticには、インデックス式の値に関する統計データも格納されます。 これらは、実際のデータ列であるかのように記述されます。特に、starelidはインデックスを参照します。 ただし、通常の非式インデックス列にはエントリが作成されません。これは、基になるテーブル列のエントリと重複するためです。 現在、インデックス式のエントリは常にstainherit=falseです。
さまざまな種類の統計がさまざまな種類のデータに適している可能性があるため、pg_statisticは、保存する統計の種類をあまり想定しないように設計されています。 pg_statisticでは、非常に一般的な統計 (nullnessなど) のみに専用の列が指定されます。 それ以外のすべては「スロット」に記憶され、それは関連する列のグループであり、その内容はスロットの列の1つのコード番号によって識別される。 詳細については、src/include/catalog/pg_statistic.hをご参照ください。
テーブルの内容に関する統計情報でさえ機密と見なされる可能性があるため、pg_statisticは一般に公開することはできません。 (例: 給与列の最小値と最大値は非常に興味深いかもしれません。 pg_statsは、現在のユーザーが読み取り可能なテーブルに関する情報のみを公開するpg_statisticの公開ビューです。
列 | データ型 | 説明 |
|
| 記述された列が属するテーブルまたはインデックス。 |
|
| 説明されている列の番号。 |
|
| trueの場合、統計には指定されたリレーションの値だけでなく、継承子列が含まれます。 |
|
| nullである列のエントリの割合。 |
|
| null以外のエントリの平均格納幅 (バイト単位) 。 |
|
| 列内の異なるnull以外のデータ値の数。 ゼロより大きい値は、異なる値の実際の数である。 ゼロ未満の値は、テーブル内の行数の乗数の負の値です。たとえば、値の約80% が非nullであり、各非null値が平均で約2回表示される列は、明了= -0.4で表すことができます。 ゼロ値は、異なる値の数が未知であることを意味する。 |
|
|
|
|
|
|
|
| 照合は、 |
|
|
|
|
|
|