【问题标题】:Get the Size of Multiple Tables in One Query POSTGRES?在一个查询 POSTGRES 中获取多个表的大小?
【发布时间】:2014-11-21 05:24:59
【问题描述】:

Following on from this prior question about relation sizes:

这个查询:

query = "CREATE TEMPORARY TABLE query_out AS SELECT * FROM users WHERE is_admin = false"
ActiveRecord::Base.connection.execute(query)

将生成一个临时表并插入此查询中的所有记录,即

SELECT * FROM users WHERE is_admin = false

然后

ActiveRecord::Base.connection.execute("SELECT pg_size_pretty(pg_relation_size('query_out'))")

我只得到一张桌子的大小。

我需要做什么才能在一个查询中调整多个表的大小?

任何帮助将不胜感激。

谢谢

它将给出该临时表的大小。

【问题讨论】:

  • 只有特定数量的表或什么???
  • 一个猜测:SELECT pg_size_pretty(pg_relation_size('table1')) size_table1,pg_size_pretty(pg_relation_size('table2')) size_table2这样你可以试试
  • 是的,有具体的表数
  • 谢谢,它给出了不同列中的表格大小。我需要所有表格的大小总和?
  • 谢谢,但它非常复杂。我得到了所有表格的大小,但在不同的列中。请建议我一个简单的查询,以便我可以总结不同列的大小。

标签: postgresql ruby-on-rails-4 ruby-2.0


【解决方案1】:

以下选择查询将返回所有表及其大小

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's Comment

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

在您的PostgreSQL 数据库中创建vTableAndSize_1 并在您的前端进行如下查询(我不熟悉Ruby

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    相关资源
    最近更新 更多