PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Nhận kích thước của nhiều bảng trong một truy vấn POSTGRES?

Sau khi truy vấn chọn sẽ trả về tất cả bảng và kích thước của nó

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;

Tạo CHẾ ĐỘ XEM với lựa chọn này

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;

và bây giờ bạn có thể truy vấn trên chế độ xem này để có được kích thước như thế này

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

Theo Nhận xét của 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;

và nhận tổng kích thước của nhiều cột bằng cách sử dụng

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

Tạo vTableAndSize_1 trong PostgreSQL của bạn cơ sở dữ liệu và truy vấn như bên dưới trong giao diện người dùng của bạn ( tôi không quen với 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. Làm thế nào để sử dụng Postgres jsonb '?' toán tử trong Laravel với hỗ trợ chỉ mục?

  2. 3 cách liệt kê tất cả các hàm trong PostgreSQL

  3. Cập nhật mọi hàng với ngày giờ ngẫu nhiên giữa hai ngày

  4. Làm cách nào để truy vấn độ dài của Django ArrayField?

  5. Oracle chuyển sang PostgreSQL:Lý do nên di chuyển