sql >> Databasteknik >  >> RDS >> PostgreSQL

Få storleken på flera tabeller i en fråga POSTGRES?

Följande valfråga kommer att returnera alla tabellen och dess storlek

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;

Skapa en vy med detta val

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;

och nu kan du fråga på den här vyn för att få storleken så här

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

Enligt OP:s 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;

och få storlekssumman för flera kolumner med

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

Skapa vTableAndSize_1 i din PostgreSQL databas och fråga som nedan i ditt användargränssnitt (är inte bekant med Ruby )

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



  1. Iterera genom tabellen, utför beräkning på varje rad

  2. RODBC odbcDriverConnect() Anslutningsfel

  3. PostgreSQL:Prestationsstraff för sammanfogning av två tabeller i separata scheman

  4. Bitvis verksamhet i Postgres