Postgresql 当我们有几个索引时,哪个索引用于回答聚合?

Postgresql 当我们有几个索引时,哪个索引用于回答聚合?,postgresql,indexing,Postgresql,Indexing,我有一个每天分区的表,每个分区都有一个主键,还有一些列上的其他索引不是空的。如果我获取以下内容的查询平面: SELECT COUNT(*) FROM parent_table; 我可以看到使用了不同的索引,有时使用主键索引,有时使用其他索引。postgres如何决定使用哪个索引。请注意,我的表没有集群,以前也从未集群过。此外,主键是串行的 作出此决定时使用的目录/统计表是什么。也许Postgres发现不同的索引都具有相同的成本,因此选择的索引是任意的。可能是,但我认为,应该有几个因素,例如,索

我有一个每天分区的表,每个分区都有一个主键,还有一些列上的其他索引不是空的。如果我获取以下内容的查询平面:

SELECT COUNT(*) FROM parent_table;
我可以看到使用了不同的索引,有时使用主键索引,有时使用其他索引。postgres如何决定使用哪个索引。请注意,我的表没有集群,以前也从未集群过。此外,主键是串行的


作出此决定时使用的目录/统计表是什么。

也许Postgres发现不同的索引都具有相同的成本,因此选择的索引是任意的。可能是,但我认为,应该有几个因素,例如,索引大小可能是这些因素之一。投票决定转到dba.stackexchange,因为这实际上是关于PostgreSQL的内部结构,一个重要的因素可能是哪个索引加载到缓冲区。我不介意把这个问题转移到dba,我问这个问题,因为升级到PostgreSQL 9.6后,并行seq扫描用于评估上述查询,而使用仅索引扫描并不是最佳的。所以,我想知道更多关于计算的信息。注意,我经常进行冷测试,因为服务器负载类似于DWH,具有大量插入和少量聚合查询。