历史版本。 PostgreSQL 8.4 已结束支持。 请参阅 当前版本手册.
44.55. pg_stats #
视图pg_stats提供对存储在pg_statistic目录中信息的访问。此视图仅允许访问用户具有读取权限的表对应的pg_statistic行,因此可以安全地允许对此视图进行公共读取访问。
pg_stats也旨在以比底层目录更易读的格式呈现信息—
但其模式必须在为pg_statistic定义新的槽类型时进行扩展。
表 44.56. pg_stats 列
| 名称 | 类型 | 引用 | 描述 |
|---|---|---|---|
schemaname | name | | 包含表的模式名称 |
tablename | name | | 表的名称 |
attname | name | | 被此行描述的列名 |
null_frac | real | 列项中为空的比例 | |
avg_width | integer | 列的条目的平均字节宽度 | |
n_distinct | real | 如果大于零,表示列中可区分值的估计个数。如果小于零,是可区分值个数除以行数的负值(当ANALYZE认为可区分值的数量会随着表增长而增加时采用负值的形式,而如果认为列具有固定数量的可选值时采用正值的形式)。例如,-1表示一个唯一列,即其中可区分值的个数等于行数。
| |
most_common_vals | anyarray | 列中高频值的一个列表(如果没有任何一个值看起来比其他值更常用,此列为空)。对于某些数据类型(如tsvector),这是最常见元素值的列表,而不是该类型本身的值的列表。
| |
most_common_freqs | real[] | 高频值或高频元素的频率列表,即每一个高频值的出现次数除以总行数(如果most_common_vals为空,则此列为空)。对于某些数据类型(如tsvector),它还可以存储一些额外信息,使它比most_common_vals数组更长。
| |
histogram_bounds | anyarray | 将列值划分成大小接近的组的值列表。如果存在most_common_vals,其中的值会被直方图计算所忽略(如果列类型没有一个<操作符或者most_common_vals等于整个值集合,则此列为空)
| |
correlation | real | 物理行顺序和列值逻辑顺序之间的统计关联。其范围从-1到+1。当值接近-1或+1时,在列上的一个索引扫描被认为比值接近0时的代价更低,因为这种情况减少了对磁盘的随机访问(如果列数据类型不具有一个<操作符,则此列为空)
|
most_common_vals和histogram_bounds数组中的条目最大数量可以逐列设置,使用ALTER TABLE SET STATISTICS命令,或者通过设置default_statistics_target运行时参数来全局设置。