1

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

我想有效地将​​具有其中两列(a + e)的所有行选择为给定值。

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

我看过以下帖子,其中指定 MySQL 可以使用多列索引的最左侧部分来有效地查询行。但是我没有在复合主键上找到任何 PostgreSQL 的东西。

4

1 回答 1

2

为了获得最佳性能,您需要在(a, e).

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

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

于 2022-01-10T11:07:09.227 回答