我有以下 SQL,它输出数据库中所有表的大小的格式良好的列表:
SELECT
schema_name,
relname,
pg_size_pretty(table_size) AS size
FROM (
SELECT
pg_catalog.pg_namespace.nspname AS schema_name,
relname,
pg_relation_size(pg_catalog.pg_class.oid) AS table_size
FROM pg_catalog.pg_class
JOIN pg_catalog.pg_namespace ON relnamespace = pg_catalog.pg_namespace.oid
) t
WHERE schema_name NOT LIKE 'pg_%'
ORDER BY table_size DESC;
这将输出如下数据(为了隐藏数据,一些名称和大小发生了改变,但您可以明白我的意思):
schema_name | relname | size
---------------------+-----------------------------------------+------------
information_schema | log | 1024 kB
information_schema | collations | 1024 kB
information_schema | routines | 1024 kB
(30 rows)
我想将每个表上的 count() 结果添加为此处的第四列,但不知道如何执行此操作。我使用的是 PostgreSQL 14,不知道这是否有什么特别之处。