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,tableC;
拓展
PostgreSQL支持多种形式的统计信息,包括单列的统计信息和多列(扩展)的统计信息,单列的统计信息是指对每个表的每一个属性(列)都在PG_STATISTIC系统表中产生一个对应的统计信息元组,这个元组负责从多个角度描绘这个属性中的数据分布。
-
PG_STATISTIC系统表
PG_CLASS系统表会保存两个统计信息:relpages和reltuples。relpages记录了当前表用了多少个页面,reltuples记录了当前表共有多少条元组。PG_STATISTIC系统表保存单列的统计信息,如果用户要给某个表生成统计信息,则可以使用ANALYZE语句对一个表进行统计分析,这样就能给这个表生成统计信息并且保存在PG_STATISTIC系统表中。 -
PG_STATISTIC_EXT系统表
保存的是多列的统计信息,用户需要显式地使用CREATE STATISTICS语句对一个表创建多列统计信息。
参考
原文地址:https://blog.csdn.net/qq_40985985/article/details/128835076
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。