如何找到 Postgres 中所有表的行数

2023-12-07

我正在寻找一种方法来查找 Postgres 中所有表的行数。我知道我可以一次做一张桌子:

SELECT count(*) FROM table_name;

但我想查看所有表的行数,然后按其排序以了解我的所有表有多大。


有三种方法可以得到这种计数,每种方法都有自己的权衡。

如果您想要真实的计数,则必须像针对每个表使用的那样执行 SELECT 语句。这是因为 PostgreSQL 将行可见性信息保存在行本身中,而不是其他任何地方,因此任何准确的计数只能与某些事务相关。您将获得该事务在执行时所看到的内容的计数。您可以自动执行此操作以针对数据库中的每个表运行,但您可能不需要那么高的准确性或希望等待那么长时间。

WITH tbl AS
  (SELECT table_schema,
          TABLE_NAME
   FROM information_schema.tables
   WHERE TABLE_NAME not like 'pg_%'
     AND table_schema in ('public'))
SELECT table_schema,
       TABLE_NAME,
       (xpath('/row/c/text()', query_to_xml(format('select count(*) as c from %I.%I', table_schema, TABLE_NAME), FALSE, TRUE, '')))[1]::text::int AS rows_n
FROM tbl
ORDER BY rows_n DESC;

第二种方法指出,统计收集器随时跟踪大致有多少行是“活动的”(未删除或被以后的更新废弃)。在繁重的活动下,该值可能会略有偏差,但通常是一个不错的估计:

SELECT schemaname,relname,n_live_tup 
  FROM pg_stat_user_tables 
ORDER BY n_live_tup DESC;

这还可以显示有多少行已死亡,这本身就是一个值得监视的有趣数字。

第三种方法是注意系统 ANALYZE 命令(从 PostgreSQL 8.3 开始由 autovacuum 进程定期执行以更新表统计信息)也会计算行估计。你可以像这样抓住那个:

SELECT 
  nspname AS schemaname,relname,reltuples
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE 
  nspname NOT IN ('pg_catalog', 'information_schema') AND
  relkind='r' 
ORDER BY reltuples DESC;

很难说使用这些查询中哪一个更好。通常我会根据我是否还想在 pg_class 内部或 pg_stat_user_tables 内部使用更有用的信息来做出决定。出于基本的计数目的,只是为了了解物体的总体大小,两者都应该足够准确。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何找到 Postgres 中所有表的行数 的相关文章

  • 禁用 Psql 输出中的换行

    在 Linux 中使用 Psql 时 如果 SQL 查询的结果包含许多列或长字符串数据 它将包装初始视图 只有当我滚动到一侧时 它才会停止包装并在单独的行上显示每一行 我尝试过各种 pset options https www postgr
  • 如何获取 jqGrid 的行数?

    我想知道如何获取 jqGrid 的行数 我在用着rowNum 1所以它显示所有行 我尝试使用 parseInt grid getGridParam records 10 但它总会回归0 谢谢您的帮助 Try grid getGridPara
  • PostgreSQL: 月 := 间隔 '30 天';

    尝试从 2 个表中删除超过 1 个月的记录 其中 1 引用另一个表中的 id 列 create or replace function quincytrack clean returns void as BODY begin month i
  • 确保唯一 ID 的 PostgreSQL 序列

    拥有一个以列 ID 作为主键的表 以及一个包含由序列 myUniqueSequence 定义的整数的列 MyNumber 我想在 PostgreSQL 中定义 myUniqueSequence 它将返回 MyNumber 列的下一个可用且唯
  • 在同一分区上应用多个窗口函数

    是否可以将多个窗口函数应用于同一分区 如果我使用的词汇不正确 请纠正我 例如你可以这样做 SELECT name first value over partition by name order by date from table1 但有
  • Postgresql 在 where 子句中转义单引号 [重复]

    这个问题在这里已经有答案了 所以我尝试运行这样的脚本 select id from owner where owner name john s 我收到此错误 ERROR column john s does not exist 我也尝试过这
  • MYSQL计算计数平均值

    我有一个简单的查询 我想要一个平均值 这就是现在的样子 我想知道每个 Opname OpnameID 的平均计数 SELECT Opname OpnameID count as behandelingen per opname FROM b
  • TypeORM 插入带有外键的行

    我之间有 OneToMany 关系聊天室1 M gt 留言我遇到的问题是 每当我尝试插入一条消息 或大量消息 时 ChatRoom 的外键为空 此外 我正在上传我的设置 Entity messages export class Messag
  • 如何使用diesel-rs选择色谱柱的子集?

    我现在花了几个小时的时间来查询表的可用列的子集以及在其中包含计算 我知道这不是在选择查询中执行计算的最佳方式 但现在 我只是在开发一个原型 它应该是可行的 我在用diesel rs作为后端实现中所有数据库操作的 ORM 数据将存储在 Pos
  • 数组 (UUID[ ]) 会破坏 1NF 吗?

    我的问题是包含 UUID 数组的字段是否会破坏范式 http en wikipedia org wiki Database normalization 在包含数组之前位于 NF 中的表中 原表 CREATE TABLE Floor Floo
  • 将 PostgreSQL 扩展安装到所有模式

    我在 PostgresQL 9 1 1 上尝试扩展unaccent http www postgresql org docs 9 1 static unaccent html适用于所有模式 所以我运行了命令CREATE EXTENSION
  • Postgresql:使用窗口函数限制组大小的分组

    Postgresql 中有没有一种方法可以编写一个查询 该查询根据具有限制的列对行进行分组 而不丢弃其他行 假设我有一个包含三列的表格id color score与以下行 1 red 10 0 2 red 7 0 3 red 3 0 4 b
  • 在实时计算机上更新(或替换)整个数据库表的最佳方法是什么?

    我每周都会收到一个数据源 我将对其进行解析并放入数据库中 数据每周不会有太大变化 但我应该定期更新数据库 除了每周更新外 数据是静态的 目前重建整个数据库不是问题 但最终该数据库将上线 人们可以在我重建数据库时查询该数据库 数据量并不小 几
  • 如何从 postgresql 获取 TEXT 列值

    我在 postgreSQL 中有一个以下简单的表 CREATE TABLE data id bigint NOT NULL text column text 正如我在 phpPgAdmin 网站中看到的那样 text column 的值是数
  • 使用 python sqlalchemy 通过WITH语句执行原始查询

    我正在尝试使用原始 sqlalchemy 将值插入 Postgres11 数据库text 查询 当我通过 psql client 运行以下 SQL 查询时 它可以正常工作 WITH a AS INSERT INTO person id VA
  • 如何在 PostgreSql 的预订表中找到第一个空闲时间

    预订表包含预订开始日期 开始时间和持续时间 工作日的开始时间为工作时间 8 00 18 00 以半小时为增量 持续时间也以每天半小时为增量 CREATE TABLE reservation startdate date not null s
  • 如何使用 Dapper 从 .NET 7 执行 Postgresql 函数,而不列出所有参数的数据类型

    我正在尝试将我的 NET 5 Web API 代码传输到 NET 7 我有一个名为的单例服务DataManager它实现了接口IDataManager 其中一项功能是Execute还有其他 C 函数 称为 Get GerMany 以及 In
  • SQL:每天选择最接近特定时间的一条记录

    我有一张表存储某个时间点的值 CREATE TABLE values value DECIMAL datetime DATETIME 每一天可能有多个值 也可能某一天只有一个值 现在我想获取给定时间跨度 例如一个月 内最接近一天中给定时间的
  • PostgreSQL 性能 - SELECT 与存储函数

    我正在尝试在 PostgreSQL 上创建一个存储函数来提高性能并存储大查询 并且只需在我的代码中调用该函数即可 例如 如果我有一个函数 CREATE OR REPLACE FUNCTION test max integer RETURNS
  • 如何在 PostgreSQL 中将数据库从一台服务器移动到另一台服务器?

    我正在尝试将数据库从旧服务器移动到新服务器 任何帮助 将不胜感激 Just pipe http www postgresql org docs current interactive migration html从旧服务器转储到新服务器 p

随机推荐

  • 在 SSIS 中动态更改服务器名称

    我的 SSIS 包在开发周期 开发 QA 暂存和生产 期间会经历多个环境 因此我想使用 SSIS 中的配置来设置连接管理器中的服务器名称 这样我就不会不需要手动完成此操作 我读过有关使用 xml 配置文件 SQL 配置表和环境变量的内容 然
  • 谷歌地图:未捕获的类型错误:类型错误

    在几个页面上 我开始收到上述错误 但仅在 Chrome 中 这是一些简单的代码来演示该错误
  • 使用 boost::dynamic_bitset 作为键值对序列化 boost::bimap

    我有兴趣序列化boost bimap含有boost dynamic bitset这样我就可以保存它并在需要时加载回来 我已经尝试这样做 但遇到了很多错误 我随身携带的代码如下 Example program include
  • python 中的布尔值是可变的吗?

    我在 python 中有以下代码 def update request id success 0 try product Mattress objects get id id success 1 except Mattress DoesNo
  • C# 内存地址和变量

    在C 中 有没有办法 获取存储在a中的内存地址 引用类型变量 获取a的内存地址 多变的 EDIT int i int pi i 如何打印 pi 的十六进制值 对于 2 运算符的工作方式与 C 中相同 如果变量不在堆栈上 您可能需要使用fix
  • 从“SecKeychainFindGenericPassword”给出的“SecKeychainItemRef”中提取“用户名”?

    从这个问题 我知道你可以使用SecKeychainFindGenericPassword without用户名值 它仍然会返回给定服务的钥匙串项 但是我如何获取用户名呢 仅使用服务名称获取存储在钥匙串中的用户名 或者 您应该在哪里存储用户名
  • 是否可以将网页内容读入字符串中,以便我可以解析数据?

    我希望能够让我的 iPhone 将 URL 或者实际上是 url 指向的文件 加载到字符串中 我希望能够执行此操作的原因是这样我就可以解析字符串以查找标签并从中提取一些值 这些文件主要是网页 例如 html 或 asp 等 有人能给我一些提
  • 导出并发布 Typescript 中的所有类型和接口

    我正在尝试发布一个打字稿库 我不清楚如何公开所有类型和接口 这是我的设置 mylib src types mytypes ts index ts package json tsconfig json index ts import MyIn
  • Firefox - 删除未修饰复选框的边框

    我有一个复选框appearance none 这在 Chrome 中有效 但在 Firefox 中它留下了一个我无法删除的插入边框 我努力了border none已经 我这里有一个小提琴 http jsfiddle net jcJJ5 不幸
  • 根据 HTML 文本匹配产品价格

    我正在尝试在字符串上使用简单的正则表达式来获取定价信息 但是我的preg match all根本就是没有找到它应该找到的东西 我正在寻找例如 or 或者有时货币符号可能被编码为 HTML 实体 例如对于英镑 pound or 163 使用有
  • Django:在模型 save() 方法中返回序列化器 ValidationError

    我使用 django rest framework 在 Django 框架内创建 Rest API 并且可以返回任何validationError除了序列化器方法之外 但是 我想知道是否有可能返回错误save Django的方法model被
  • 将函数更改为 PDO

    这是我的api中使用的语句 这是第二个 result下面整个函数中的变量 如何将其更改为使用 PDO result query SELECT p IdPhoto p device token title p IdUser FROM phot
  • 如何在nodejs中向mysql查询回调传递参数

    我试图找出将自定义数据传递到查询调用以在回调中可用的正确方法 我在nodejs 中使用MySQL 库 所有最新版本 我调用了 connection query sql function err result 我找不到一种方法来 1 将自定义
  • 在父元素内将对象序列化为 XML

    我有一个 WPF C 程序 有时我需要将对象序列化为 XML 在其他地方 我一直在使用这个 TextWriter writer new StreamWriter xmlFilePath XmlSerializer xmlSerializer
  • 如何从 C stdio.h getline() 替换/忽略无效的 Unicode/UTF8 字符?

    在Python上 有这个选项errors ignore 为了openPython函数 open filepath txt r encoding UTF 8 errors ignore 这样 读取包含无效 UTF8 字符的文件时 它们将被替换
  • 如何完全删除 Xcode 4

    我想删除所有现有的 SDK 版本以及 Xcode 4 Xcode 4 指南说要这样做 sudo Xcode4 Library uninstall devtools mode all 但我在这个位置没有 Xcode4 我看到它的唯一地方是 D
  • 如何正确重载 ostream 的 << 运算符? [复制]

    这个问题在这里已经有答案了 我正在用 C 编写一个用于矩阵运算的小型矩阵库 然而 我的编译器抱怨了 而以前却没有 这段代码被搁置了六个月 在这期间我将我的计算机从Debian 4 0 蚀刻 至Debian 5 0 莱尼 g Debian 4
  • Flexbox/浮动 - 2 1 2 布局

    我正在尝试使用 Flexbox 或浮动创建 2 1 2 布局 如添加到此问题的图像中所示 有没有什么方法可以仅使用有序的项目列表成功地做到这一点 ul li 1 li li 2 li li 3 li li 4 li li 5 li ul 1
  • 将结构体数组从 C# 传递到 Delphi

    我正在使用罗伯特 吉塞克非托管导出 1 2 6 in VS2010我的目标是传递一个结构数组时间 2019 03 17 标签 c NET 3 5 to 德尔福 D7 我必须承认 我对delphi不太熟悉 我已经读过这个帖子 但建议的答案对我
  • 如何找到 Postgres 中所有表的行数

    我正在寻找一种方法来查找 Postgres 中所有表的行数 我知道我可以一次做一张桌子 SELECT count FROM table name 但我想查看所有表的行数 然后按其排序以了解我的所有表有多大 有三种方法可以得到这种计数 每种方