一列中distinct值个数存储在pg_stats的n_distinct字段。如果n_distinct为负值,则其绝对值表示不同值的比例。例如,对于-1值,表示这列的值都是唯一的。当不同值的数量达到行数的10%或更多时,分析器将切换到分数模式。此时当修改数据时该比例通常会保持不变。如果不同值的数量计算不准确(因为样本恰好不具有代表性...
较高的default_statistis_target值可能会提高估计精度,但直方图与MCV列表一起已经产生了很好的结果,即使有大量不同值: SELECTn_distinctFROMpg_stats WHEREtablename='boarding_passes'ANDattname='seat_no'; n_distinct −−−−−−−−−−−− 461 (1row) 1. 2. 3. 4. 5. 6. 7....
PG_STATS视图可用来查看存储在pg_statistic表里面的单列统计信息。该视图记录的统计信息更新时间间隔由GUC参数autovacuum_naptime设置。
relpages|1reltuples|3 #这里看到已经有3条数据了,此时说明这张表的统计信息准确了。 此时查看pg_stats表 postgres=#selecttablenameas"表名",attnameas"列表",avg_widthas"平均长度",null_fracas"空值率",n_distinctas"去重后值的个数"frompg_statswheretablename='test1'; 表名|列表|平均长度|空值率|去...
pg_stats视图提供对存储在pg_statistic目录中信息的访问。此视图能访问pg_statistic行是有限制的,可访问行所对应的表必须是用户有读权限的。因此让所有用户都可以读此视图是安全的。 pg_stats也被设计为能以更适合阅读的格式显示底层目录的信息— 但代价是只要为pg_statistic定义了新的槽类型,就必须要扩展此视图的...
stadndistinct real 标识dn1上字段里唯一的非NULL数据值的数目。 一个大于零的数值是独立数值的实际数目。 一个小于零的数值是表中行数的分数的负数(比如,一个字段的数值平均出现概率为两次,则可以表示为stadistinct=-0.5)。 零值表示独立数值的数目未知。 stakindN smallint 一个编码,表示这种类型的统计存...
FROM pg_stats_ext WHERE statistics_name = 'flights_nd'; n_distinct −−−−−−−−−−−−−−− {"5, 6": 618} (1 row) 1. 2. 3. 4. 5. 6. 多元最常见值列表 当值分布不均匀时,仅功能依赖数据可能不够,因为估计值将根据特定的值对而变化。考虑这个例子,计划者...
stats->stadistinct = -(stats->stadistinct / totalrows) 使用distinct=total_rows*abs(stadistinct) 一个0值表示唯一值的数目未知。 stakindN 一个代码,它表示存储在该pg_statistic行中第N个“槽位”的统计类型。 stakind==1 most_common_vals,most_common_freqs 列中最常用值的一个列表,最常用值的频率列...
pg_stats是pg_statistic上的一个公共可读的视图,它只会显示出当前用户可读的表的信息。 列名称 列类型 描述 starelid oid 被描述列所属的表或索引。 staattnum int2 被描述列的编号。 stainherit bool 如果为真,统计包含了继承后代的列而不仅仅是指定关系的列。 stanullfrac float4 列的项为空的比例。 sta...
n/总桶数:(sslot.nvalues - 1)即为直方图中满足条件的行数占比。直方图的占比*非常见数的占比即为直方图中求得的满足条件的记录选择率。 当然,若有多个条件,则多个条件的选择率进行与或等(加/减)操作就可以得到多个条件下的选择率。 参考 https://www.postgresql.org/docs/current/planner-stats.html...