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')")