sql >> Database teknologi >  >> RDS >> PostgreSQL

Få størrelsen på flere tabeller i én forespørgsel POSTGRES?

Efter valg af forespørgsel vil alle tabellen og dens størrelse returneres

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;

Opret en VIEW med dette valg

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;

og nu kan du forespørge på denne visning for at få størrelsen som denne

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

Ifølge 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;

og få størrelsessummen af ​​flere kolonner ved hjælp af

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

Opret vTableAndSize_1 i din PostgreSQL database og forespørgsel som nedenfor i din frontend (er ikke bekendt med Ruby )

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



  1. WIDTH_BUCKET() Funktion i Oracle

  2. Mysql - EXPLAIN SELECT fra en VIEW søger i alle rækker i hovedtabellen

  3. Årsagen til, at Oracle skelner mellem store og små bogstaver?

  4. Oracle SQL Auto Generated Identity Primary Key