sql >> Databáze >  >> RDS >> PostgreSQL

Získat velikost více tabulek v jednom dotazu POSTGRES?

Následující výběrový dotaz vrátí celou tabulku a její velikost

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;

Vytvořte VIEW s tímto výběrem

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;

a nyní se můžete dotazovat na tento pohled a získat velikost jako je tato

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

Podle Komentář OP

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;

a získat součet velikostí více sloupců pomocí

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

Vytvořte vTableAndSize_1 ve vašem PostgreSQL databáze a dotaz jako níže ve vašem rozhraní (nejsem obeznámen s Ruby )

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



  1. Nastavte, které řádky se mají odstranit na mysql po použití kombinovaného jedinečného indexu w/ignore

  2. Proč PostgreSQL sloučil uživatele a skupiny do rolí?

  3. Jak vytvořit instalaci MySQL pro lokální testování

  4. Mysql změní výchozí znakovou sadu tabulky na znakovou sadu databáze