一个关于 SELECT COUNT(id) 的初级问题

2019-08-12 13:25:28 +08:00
 Livid

发现像下面这样的查询,希望获得一张表里的记录总数,在表的数据量比较大(上亿)的情况下,PostgreSQL 是无法马上返回结果的,需要等几十秒。有什么更好的方法么?

SELECT COUNT(id) FROM table
7564 次点击
所在节点    PostgreSQL
26 条回复
glacer
2019-08-12 19:34:02 +08:00
不需要实时精确数据的话,就是存缓存定时更新。
还有一种做法就是取 Explain 的 rows。
starsriver
2019-08-13 00:43:54 +08:00
cache 阿,没见过这么统计的。
est
2019-08-13 11:49:29 +08:00
这事儿刚好也遇到过。楼上很多已经给出回答了,我具体说下,就是 EXPLAIN SELECT COUNT(id) FROM table 去看 rows 那一行返回。预估的。有误差。
lolizeppelin
2019-09-07 18:42:40 +08:00
@est 要加 where 过滤咋办 233333
est
2019-09-07 19:12:22 +08:00
@lolizeppelin 那就直接加上咯
encro
2020-01-02 16:43:54 +08:00
升级 12,据说有优化,包括对 where 过滤

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/591160

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX