🐘
ぽすぐれでindexのサイズを取りたい!
INDEXサイズを見るクエリ
SELECT tablename, indexname, relpages, pg_relation_size(class.oid) / (1024 * 1024) AS size_mb
FROM pg_indexes idx
LEFT JOIN pg_class class ON class.relname = idx.indexname
WHERE schemaname NOT IN ('pg_catalog', 'information_schema')
ORDER BY size_mb DESC
;
※pg_relation_sizeはbyte単位
※PostgreSQLで設定できるパラメータのデフォルト単位は8kBだったりするので混乱しないように。
INDEXサイズの合計を見たい時
フィルタを良しなに設定すればOK
SELECT sum(pg_relation_size(class.oid) / (1024 * 1024)) AS size_mb
FROM pg_indexes idx
LEFT JOIN pg_class class ON class.relname = idx.indexname
WHERE schemaname NOT IN ('pg_catalog', 'information_schema')
AND tablename LIKE 'target_table_name_%'
;
参考
Discussion