[PostgreSQL] 現在のテーブルとインデックスのサイズ一覧を知る方法
CREATE VIEW report_tablesize AS
SELECT
objname,
to_char(pg_relation_size(objname::regclass), '999,999,999,999') as bytes
FROM (
SELECT
tablename as objname
FROM pg_tables
WHERE schemaname = 'public'
UNION
SELECT
indexname as objname
FROM pg_indexes
WHERE schemaname = 'public'
) as objects
ORDER BY bytes DESC
;
COMMENT ON VIEW report_tablesize IS '現在のテーブルサイズ';
下記記事のSQLが動かなくなったので調べたところ、 PostgreSQL 8.4からpg_relation_size関数の挙動が変わって、regclass型しか受け付けなくなったのが原因のようです。
参考
PostgreSQLでテーブルサイズを確認する
カテゴリ:
PostgreSQL