2025年9月25日: PostgreSQL 18 发布!
支持版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4

53.29. pg_stats #

视图 pg_stats 提供了对 pg_statistic 目录中存储的信息的访问。此视图仅允许访问属于用户有权读取的表的 pg_statistic 中的行,因此允许公共读取此视图是安全的。

pg_stats 的设计也旨在比底层目录提供更易读的格式来呈现信息——代价是每当为 pg_statistic 定义新的槽类型时,其模式都必须进行扩展。

表 53.29. pg_stats

列 类型

描述

schemaname name (引用 pg_namespace.nspname)

包含表的模式名称

tablename name (引用 pg_class.relname)

表名

attname name (引用 pg_attribute.attname)

此行描述的列名

inherited bool

如果为真,则此行包含来自子表的值,而不仅仅是指定表中的值

null_frac float4

列条目中为 NULL 的比例

avg_width int4

列条目的平均字节宽度

n_distinct float4

如果大于零,则表示列中不同值的估计数量。如果小于零,则表示不同值的数量除以行数的负值。(当 ANALYZE 认为不同值的数量可能会随着表的增长而增加时,使用负数形式;当列具有固定可能值时,使用正数形式。)例如,-1 表示一个唯一列,其中不同值的数量与行数相同。

most_common_vals anyarray

列中最常见值的列表。(如果没有值似乎比其他值更常见,则为 NULL。)

most_common_freqs float4[]

最常见值的频率列表,即每个值出现的次数除以总行数。(当 most_common_vals 为 NULL 时,此字段也为 NULL。)

histogram_bounds anyarray

将列的值划分为大致相等人口数量的组的值列表。(如果列数据类型没有 < 运算符,或者 most_common_vals 列表占用了整个人口数量,则此列为 NULL。)

correlation float4

物理行顺序与列值逻辑顺序之间的统计相关性。范围从 -1 到 +1。当该值接近 -1 或 +1 时,基于该列的索引扫描的成本将被估计得比接近零时更低,因为可以减少磁盘的随机访问。(如果列数据类型没有 < 运算符,则此列为 NULL。)

most_common_elems anyarray

列值中最常出现的非 NULL 元素值的列表。(标量类型为 NULL。)

most_common_elem_freqs float4[]

最常见元素值的频率列表,即包含给定值至少一次的行的比例。在每个元素频率之后会附加两个或三个额外的值;这些是前面元素频率的最小值和最大值,以及可选的 NULL 元素的频率。(当 most_common_elems 为 NULL 时,此字段也为 NULL。)

elem_count_histogram float4[]

列值中不同非 NULL 元素值的计数的直方图,后面跟着不同非 NULL 元素的平均数量。(标量类型为 NULL。)

range_length_histogram anyarray

范围类型列的非空且非 NULL 的范围值的长度的直方图。(非范围类型为 NULL。)

此直方图是使用 subtype_diff 范围函数计算的,无论范围边界是否包含。

range_empty_frac float4

列条目中值为空范围的比例。(非范围类型为 NULL。)

range_bounds_histogram anyarray

非空且非 NULL 的范围值的下界和上界的直方图。(非范围类型为 NULL。)

这两个直方图被表示为一个单一的范围数组,其下界表示下界的直方图,上界表示上界的直方图。


数组字段的最大条目数量可以通过每列使用 ALTER TABLE SET STATISTICS 命令来控制,或者通过设置 default_statistics_target 运行时参数来全局控制。

提交更正

如果您在文档中发现任何不正确、与您对特定功能的体验不符或需要进一步澄清的内容,请使用 此表单 报告文档问题。