这里和那里(包括 postgres web 上的官方帖子)有一些关于慢计数(*)之前版本 9.2 的讨论;不知何故,我没有找到满意的答案。
基本上我安装了 postgres 9.1,我观察到慢计数(*)很简单
select count(*) from restaurants;
在记录超过 100k 的表上。平均请求约为850ms。好吧,我假设这是人们一直在谈论的关于 postgres 9.1 及以下版本的缓慢计数的症状,因为 postgres 9.2 具有一些新功能,例如index-only scan。我想通过使用 9.1 中的相同数据集进行实验并将其放在 9.2 上。我调用了 count 语句,它仍然给出了 9.1 的错误结果。
explain analyze select count(*) from restaurants;
------------------------------------------------------------------
Aggregate (cost=23510.35..23510.36 rows=1 width=0) (actual time=979.960..979.961 rows=1 loops=1)
-> Seq Scan on restaurants (cost=0.00..23214.88 rows=118188 width=0) (actual time=0.050..845.097 rows=118188 loops=1)
Total runtime: 980.037 ms
任何人都可以提出可行的解决方案来解决这个问题吗?我需要在 postgres 上配置任何东西来启用该功能吗?
PS where 子句对我的情况也无济于事。