sql >> Database >  >> RDS >> PostgreSQL

Krijg de grootte van meerdere tabellen in één query POSTGRES?

De volgende selectiequery retourneert de hele tabel en de grootte ervan

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;

Maak een VIEW met deze selectie

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;

en nu kun je een query uitvoeren op deze weergave om de grootte als deze te krijgen

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

Volgens OP's reactie

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;

en krijg de groottesom van meerdere kolommen met behulp van

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

Maak vTableAndSize_1 in uw PostgreSQL database en query zoals hieronder in uw frontend (ben niet bekend met Ruby )

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



  1. Waarden die worden herhaald bij het vullen van een JTable

  2. Hoe kan ik in Oracle een kolom met de naam 'datum' selecteren?

  3. 5 voordelen om van te genieten wanneer u uw database upgradet

  4. Zeer beschikbare databases en clusters implementeren met ClusterControl