PostgreSQL-查询每个表的大小

业余砖家 / 2023-08-21 / 原文

1、查询数据库中单个表的大小(不包含索引)

select pg_size_pretty(pg_relation_size('表名'));

 

2、查询所有表的大小并排序(包含索引)

SELECT 
table_schema || '.' || table_name AS table_full_name, pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) AS size FROM information_schema.tables ORDER BY pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC limit 20;

 

3、查询表大小按大小排序并分离dataindex

SELECT
table_name,
pg_size_pretty(table_size) AS table_size,
pg_size_pretty(indexes_size) AS indexes_size,
pg_size_pretty(total_size) AS total_size 
FROM (
	SELECT
	table_name,
	pg_table_size(table_name) AS table_size,
	pg_indexes_size(table_name) AS indexes_size,
	pg_total_relation_size(table_name) AS total_size FROM (
		SELECT ('"' || table_schema || '"."' || table_name || '"') AS table_name FROM information_schema.tables
	) AS all_tables ORDER BY total_size DESC
) AS pretty_sizes ;