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

时间:2015-02-23 05:51:29

标签: sql postgresql

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

我正在使用Postgres数据库。

示例结果

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

2 个答案:

答案 0 :(得分:0)

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

SELECT reltuples FROM pg_class WHERE oid = 'my_schema.my_table'::regclass;
  

reltuples是pg_class表中的一列,它包含表格中"行数>的数据。这只是规划师使用的估算值。

如果你想要一个包含rowcount的所有表的列表,那么它将完成这项工作

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'
  

"为什么" SELECT count()FROM bigtable;"慢&#34?; :count( )

答案 1 :(得分:0)

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

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'

此处参考的是link

相关问题