Postgresql pg_class查看所有表名relname及记录数reltuples,记录数显示0实际有数据解决
Posted 程序媛一枚~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Postgresql pg_class查看所有表名relname及记录数reltuples,记录数显示0实际有数据解决相关的知识,希望对你有一定的参考价值。
Postgresql pg_class查看所有表名relname及记录数reltuples,记录数显示0实际有数据解决
问题
当使用Postgresql 查看所有表的表名及记录数reltuples显示0,实际select * from tableA查看有数据。
relname 表、索引、视图等的名字
reltuples 记录数,表中的存活行数。这只是一个由规划器使用的估计值。它被VACUUM、ANALYZE以及一些DDL命令(如CREATE INDEX)所更新。
relkind r = 普通表, i = 索引, S = 序列, t = TOAST表, v = 视图, m = 物化视图, c = 组合类型, f = 外部表, p = 分区表, I = 分区索引
select relname as tableName,reltuples as rowCounts from pg_class where relkind='r' order by tableName,rowCounts desc;
解决
analyse手动刷新下,然后再查看 完美解决;可多个表同时,分隔;analyse 同 analyze
analyse tableA,tableB,tableC;
select string_agg(relname,',') from pg_class where relkind='r' and reltuples=0;
analyse tableA,tableB,tableC;
拓展
PostgreSQL支持多种形式的统计信息,包括单列的统计信息和多列(扩展)的统计信息,单列的统计信息是指对每个表的每一个属性(列)都在PG_STATISTIC系统表中产生一个对应的统计信息元组,这个元组负责从多个角度描绘这个属性中的数据分布。
-
PG_STATISTIC系统表
PG_CLASS系统表会保存两个统计信息:relpages和reltuples。relpages记录了当前表用了多少个页面,reltuples记录了当前表共有多少条元组。PG_STATISTIC系统表保存单列的统计信息,如果用户要给某个表生成统计信息,则可以使用ANALYZE语句对一个表进行统计分析,这样就能给这个表生成统计信息并且保存在PG_STATISTIC系统表中。 -
PG_STATISTIC_EXT系统表
保存的是多列的统计信息,用户需要显式地使用CREATE STATISTICS语句对一个表创建多列统计信息。
参考
以上是关于Postgresql pg_class查看所有表名relname及记录数reltuples,记录数显示0实际有数据解决的主要内容,如果未能解决你的问题,请参考以下文章