PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Abrufen der Größe mehrerer Tabellen in einer Abfrage POSTGRES?

Die folgende Auswahlabfrage gibt die gesamte Tabelle und ihre Größe

zurück
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;

Erstellen Sie mit dieser Auswahl eine ANSICHT

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;

und jetzt können Sie diese Ansicht abfragen, um die Größe wie folgt zu erhalten

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

Gemäß OPs Kommentar

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;

und erhalten Sie die Größensumme mehrerer Spalten mit

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

Erstellen Sie vTableAndSize_1 in Ihrem PostgreSQL Datenbank und Abfrage wie unten in Ihrem Frontend (bin mit Ruby nicht vertraut )

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