首页 > 解决方案 > 列出 postgresql 数据库中所有表的表大小

问题描述

我可以通过以下方式获取 postgresql 数据库中所有表中的列数

SELECT TABLE_SCHEMA, TABLE_NAME, COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS 
GROUP BY TABLE_SCHEMA, TABLE_NAME;

我可以通过以下方式获取数据库中特定表中的行数

SELECT  COUNT(*) FROM mytable

如何在一次查询中获取数据库中所有表的列数和行数?

标签: sqlpostgresql

解决方案


正如@a_horse_with_no_name 建议的那样,使用 a 组合您的查询CTE并将其与 one 连接posted on this answer,例如

WITH j AS (
  SELECT table_schema, table_name, count(*) AS count_columns
  FROM information_schema.columns
  GROUP BY table_schema, table_name
) 
SELECT 
  nspname AS schemaname,relname,reltuples,count_columns
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
JOIN j ON j.table_name = relname AND j.table_schema = nspname 
WHERE 
  nspname NOT IN ('pg_catalog', 'information_schema') AND
  relkind='r' 
ORDER BY reltuples DESC;

推荐阅读