sql >> Base de Datos >  >> RDS >> PostgreSQL

Obtener el tamaño de varias tablas en una consulta POSTGRES?

La siguiente consulta de selección devolverá toda la tabla y su tamaño

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;

Crea una VISTA con esta selección

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;

y ahora puede consultar en esta vista para obtener el tamaño como este

SELECT mytable,size 
       FROM vTableAndSize WHERE mytable in ('table1','table2')

Según Comentario del OP

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;

y obtenga la suma del tamaño de múltiples columnas usando

/* 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

Crear vTableAndSize_1 en tu PostgreSQL base de datos y consulta como se muestra a continuación en su interfaz (no estoy familiarizado con Ruby )

ActiveRecord::Base.connection.execute("SELECT pg_size_pretty(sum(size)) FROM vTableAndSize_1 
WHERE mytable in ('table1','table2')")