pg_statistic
#目录 pg_statistic
存储关于数据库内容的统计数据。条目由 ANALYZE
创建,随后被查询计划器使用。请注意,即使假设统计数据是最新的,所有统计数据本质上都是近似值。
通常,对于每个已分析的表列,都有一个条目,其中 stainherit
= false
。如果表有继承子表或分区,则还会创建第二个 stainherit
= true
的条目。此行表示该列在继承树上的统计信息,即使用 SELECT
时看到的数据的统计信息,而 column
FROM table
*stainherit
= false
行表示 SELECT
的结果。column
FROM ONLY table
pg_statistic
还存储关于索引表达式的值的统计数据。这些被描述为好像它们是实际的数据列;特别是,starelid
引用索引。但是,不会为普通的非表达式索引列创建条目,因为它与底层表列的条目是冗余的。目前,索引表达式的条目始终具有 stainherit
= false
。
由于不同类型的数据可能适合不同类型的统计信息,因此 pg_statistic
的设计并没有对它存储的统计信息类型做出太多假设。只有极其通用的统计信息(例如空值)在 pg_statistic
中给出了专用列。其他所有内容都存储在“槽”中,这些槽是关联列的组,其内容由槽的列中的代码号标识。有关更多信息,请参见 src/include/catalog/pg_statistic.h
。
pg_statistic
不应该对公众可读,因为即使是关于表内容的统计信息也可能被认为是敏感的。(示例:薪水列的最小值和最大值可能非常有趣。)pg_stats
是一个可公开读取的 pg_statistic
视图,它只公开关于当前用户可读取的那些表的信息。
表 51.51. pg_statistic
列
列类型 描述 |
---|
描述的列所属的表或索引 |
描述的列的编号 |
如果为 true,则统计信息包括来自子表的值,而不仅仅是指定关系中的值 |
列条目中为 null 的比例 |
非 null 条目的平均存储宽度(以字节为单位) |
列中非 null 数据值的不同值的数量。大于零的值是不同值的实际数量。小于零的值是表中行数的乘数的负数;例如,大约 80% 的值是非 null 且每个非 null 值平均出现两次的列可以用 |
一个代码编号,指示存储在 |
用于导出存储在第 |
用于导出存储在第 |
第 |
第 |
如果您发现文档中的任何内容不正确,与您使用特定功能的体验不符或需要进一步澄清,请使用此表格报告文档问题。