La requête de sélection suivante renverra toute la table et sa taille
SELECT
relname as mytable,
pg_size_pretty(pg_relation_size(relid)) As size
FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC;
Créer une VUE avec cette sélection
CREATE VIEW vTableAndSize AS
SELECT
relname as mytable,
pg_size_pretty(pg_relation_size(relid)) As size
FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC;
et maintenant vous pouvez interroger sur cette vue pour obtenir la taille comme celle-ci
SELECT mytable,size
FROM vTableAndSize WHERE mytable in ('table1','table2')
Selon Commentaire du PO
CREATE VIEW vTableAndSize_1 as
SELECT
relname as mytable,
(pg_relation_size(relid)) As size
FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC;
et obtenir la somme des tailles de plusieurs colonnes en utilisant
/* Get sum of specific tables */
SELECT pg_size_pretty(sum(size)) tablesizesum
FROM vTableAndSize_1 WHERE mytable in ('table1','table2')
/* Get sum of all tables */
SELECT pg_size_pretty(sum(size)) tablesizesum
FROM vTableAndSize_1
Créer vTableAndSize_1
dans votre PostgreSQL
base de données et requête comme ci-dessous dans votre frontal (je ne suis pas familier avec Ruby
)
ActiveRecord::Base.connection.execute("SELECT pg_size_pretty(sum(size)) FROM vTableAndSize_1
WHERE mytable in ('table1','table2')")