在这篇文章中,我可以从命名表中获得行数.

Fast way to discover the row count of a table in PostgreSQL

SELECT count(*) AS exact_count FROM myschema.mytable;

但是我如何列出最大的10个表的行数和表大小呢?

idea 是:

  1. 列出所有表
  2. 获取每个表的表大小,排序并限制为表大小最大的10个表.
  3. 这10个表的行数(如果很难,可以计算每个表的行数)
  4. 仅针对前10名的表名、表大小及其行数的输出

但是,我如何在一个SQL命令中完成这项工作呢?

推荐答案

只需查看有关表的统计数据,就可以更轻松、更快地实现:

SELECT schemaname
     , relname
     , n_live_tup
     , pg_size_pretty(pg_relation_size(relid)) AS table_size
     , pg_size_pretty(pg_indexes_size(relid)) AS index_size
FROM pg_stat_user_tables
ORDER BY pg_relation_size(relid) DESC, n_live_tup DESC
LIMIT 10;

Sql相关问答推荐

查询将查找将标记设置为user2的用户

SQL查询以条件空值跟踪生产操作结果进展

SQL使最终结果显示两个表后的所有数据(匹配和不匹配)?

解析键-值对,根据值 Select ,并使用SQL创建新列

LEFT JOIN不显示计数0我期望的方式

两个不同星期的销售额,不加成一行

对表进行多项 Select 以返回最大值和时间

正在编写查询.我需要将订阅的时间段分为第一个订阅中包含的另一个订阅之前和之后的时间段

在SQL GROUP BY中的某些行之后执行计算

SQL Athena/prest判断值是否在嵌套的json数组中

SQL:查询作为子查询或CTE写入的最大和数失败

替换SQL Server XML中多处出现的 node 值

在presto sql中解析带有区域的时间格式

标量子查询中的窗口函数不起作用

带聚合函数的 percentile_cont

使用对 nvarchar 列的多个 LIKE 操作优化 SQL 查询

在 postgresql 中保存带有时间戳的几何类型数据

如何仅在满足条件时才按顺序在 SQL 中计数?

当没有任何行存在时,将一个表中的行插入到另一个表中的更好方法

有条件求和