Postgresql 中是否需要对复合主键的一部分进行索引?

Does indexing on a part of a composite primary key is needed in Postgresql?

我有一个(大)table,它有一个复合主键,由 5 列(a、b、c、d、e)组成。

我想高效地 select 具有其中两列 (a + e) 的所有行到给定值。

在 PostgreSQL 中,我需要索引吗?或者数据库会使用主键(甚至部分?)

我看过下面的 post,它指定 MySQL 可以使用多列索引的最左边部分来高效地查询行。但是我没有在复合主键上找到 PostgreSQL 的任何内容。

为了获得最佳性能,您需要在 (a, e) 上添加一个索引。

如果这是一个选项,您可以删除主键并将其替换为 (a, e, b, c, d) 上的主键。主键索引将支持您的查询,就唯一性而言,它同样好。

您还可以在 (e) 上试验单列索引。 PostgreSQL 可以组合对多个索引的扫描。这不会像多列索引那样快,但生成的索引会更小。