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实际有数据解决的主要内容,如果未能解决你的问题,请参考以下文章

postgresql 获取所有表名字段名字段类型注释

PostgreSQL用啥命令查询所有表名

在postgresql中如何从数据库中检索出所有的表名

PostgreSQL “千万” 不能做 五大 foolish 操作

PostgreSQL逻辑订阅中的复制状态查看

[转]PostgreSQL教程:系统表详解