Die folgende Auswahlabfrage gibt die gesamte Tabelle und ihre Größe
zurückSELECT
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')")