Sql 获取Postgres数据库中每个表的行数

Sql 获取Postgres数据库中每个表的行数,sql,postgresql,Sql,Postgresql,获取数据库中所有表的行计数的最有效方法是什么 我正在使用Postgres数据库 示例结果 table_name row_count ------------ ------------- some_table 1,234 foobar 5,678 another_table 32 ... 如果您想要一个特定表的行数,那么它将起作用 SELECT reltuples FROM pg_class WHERE oid = 'my_schema.my_table'

获取数据库中所有表的行计数的最有效方法是什么

我正在使用Postgres数据库

示例结果

table_name     row_count
------------   -------------
some_table     1,234
foobar         5,678
another_table  32
... 

如果您想要一个特定表的行数,那么它将起作用

SELECT reltuples FROM pg_class WHERE oid = 'my_schema.my_table'::regclass;
reltuples是pg_类表中的一列,它保存表中“行数>的数据。这只是计划员使用的估计值

如果您想要一个包含所有表及其行数的列表,那么它将完成这项工作

SELECT
  pgClass.relname   AS tableName,
  pgClass.reltuples AS rowCount
FROM
  pg_class pgClass
INNER JOIN
  pg_namespace pgNamespace ON (pgNamespace.oid = pgClass.relnamespace)
WHERE
  pgNamespace.nspname NOT IN ('pg_catalog', 'information_schema') AND
  pgClass.relkind='r'
为什么“从bigtable中选择计数(*)会变慢?”:


对于整个数据库的总行数,请使用

SELECT
  SUM(pgClass.reltuples) AS totalRowCount
FROM
  pg_class pgClass
LEFT JOIN
  pg_namespace pgNamespace ON (pgNamespace.oid = pgClass.relnamespace)
WHERE
  pgNamespace.nspname NOT IN ('pg_catalog', 'information_schema') AND
  pgClass.relkind='r'
同一个数据库中特定表的行计数如下所示

SELECT
  pgClass.relname   AS tableName,
  pgClass.reltuples AS rowCount
FROM
  pg_class pgClass
LEFT JOIN
  pg_namespace pgNamespace ON (pgNamespace.oid = pgClass.relnamespace)
WHERE
  pgNamespace.nspname NOT IN ('pg_catalog', 'information_schema') AND
  pgClass.relkind='r'

这里是表中的行数供参考…请看这里:谢谢@Hockenberry-奇怪的是它没有出现在搜索我的过程中!我想结束这个问题,但它有一个我正在使用的答案,它有它自己的答案为什么当你将左连接设为内部连接时会出现左连接?