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