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
的设计并未对它存储的统计数据的种类做太多假设。只有极其通用的统计数据(例如 NULL 值情况)在 pg_statistic
中有专门的列。其他所有内容都存储在“槽”(slots)中,这些槽是相关列的组,其内容通过其中一个槽列中的代码编号进行标识。有关更多信息,请参阅 src/include/catalog/pg_statistic.h
。
pg_statistic
不应该被公众读取,因为即使是关于表内容的统计信息也可能被视为敏感信息。(例如:工资列的最小值和最大值可能非常有趣。) pg_stats
是 pg_statistic
上一个可公开读取的视图,它仅显示当前用户可读的表的信息。
表 52.51. pg_statistic
列
列 类型 描述 |
---|
所描述列所属的表或索引 |
所描述列的编号 |
如果为 true,则统计信息包含子表的值,而不仅仅是指定关系中的值。 |
列中 NULL 条目的比例 |
非 NULL 条目的平均存储宽度(字节) |
列中不同非 NULL 数据值的数量。大于零的值是实际的不同值的数量。小于零的值是表中行数的负乘数;例如,一个值约 80% 为非 NULL 且平均每个非 NULL 值出现两次的列可以用 |
一个代码编号,指示 |
用于推导第 |
用于推导第 |
第 |
第 |
如果您在文档中发现任何不正确之处、与您在使用特定功能时的实际经验不符之处,或者需要进一步澄清之处,请使用 此表单 报告文档问题。