我正在使用 PostgreSQL。我不确定如果我有一个组合索引,例如在列
A
和 B
上,当我仅查询 B
时,是否会使用索引?
到目前为止,两个答案都是不正确。索引可以在任何情况下使用。
多列索引中的列顺序是相关的。特别是在 B-tree 索引(这是默认值)中。 GiN 或 GiST 索引的行为不同。
对前导列的查询非常高效。附加列的唯一缺点:索引的大小不断增加。自 Postgres 13 添加了索引重复数据删除以来,这种效果更加明显。请参阅下面的第二个链接。
Postgres 可以甚至可以使用多列索引来执行忽略前导列的查询条件。不过,第一列中的不同值越多,该用例的效率就越低。 参见: