【问题标题】:Is there a way to track progress of a Count query in Postgresql?有没有办法在 Postgresql 中跟踪 Count 查询的进度?
【发布时间】:2021-11-28 10:27:07
【问题描述】:

这个问题很简单,但我在网上找不到任何有用的东西。假设我正在运行一个

Select count(*) from table_name

查询,这需要一些时间。如何在不牺牲性能的情况下获取有关目前已计算多少行的信息?像 1、20、80... 直到我得到最终结果。

【问题讨论】:

  • 在我看来,不,你不能
  • 没有办法知道到目前为止已经计算了多少行。

标签: sql postgresql progress cursors


【解决方案1】:

如果您不需要精确计数,可以相当快地获取估算值。

SELECT reltuples::bigint AS estimate FROM pg_class WHERE oid = 'schema_name.table_name'::regclass;  

在此查询之前,真空分析将有助于使估计更准确

更多信息请参考:https://wiki.postgresql.org/wiki/Count_estimate

【讨论】:

  • 感谢您的回复。估计计数会很好,但是我将如何以恒定流的形式获取这些数据?我应该循环运行它,它不会很慢吗?我也无法将它放在像SELECT reltuples::bigint AS estimate FROM pg_class WHERE oid = 'schema_name.table_name'::regclass AND id='155' LIMIT 5 OFFSET 10; 这样的条件查询中
猜你喜欢
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
相关资源
最近更新 更多