PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Получаване на размера на множество таблици в една заявка POSTGRES?

Следващата заявка за избор ще върне цялата таблица и нейния размер

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;

Създайте ИЗГЛЕД с този избор

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;

и сега можете да направите заявка в този изглед, за да получите размера като този

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

Според Коментар на 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;

и вземете сумата на размера на множество колони с помощта на

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

Създайте vTableAndSize_1 във вашия PostgreSQL база данни и заявка като по-долу във вашия преден край (не съм запознат с Ruby )

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да слея колоните от две таблици в един изход?

  2. Конфигурация на Puma Cluster на Heroku

  3. Как да получите разлика от дни/месеци/години (datediff) между две дати?

  4. postgres заявката с IN е много бавна

  5. Postgresql UUID, поддържан от Hibernate?