具有主键的唯一复合索引

时间:2020-10-07 05:09:31

标签: postgresql indexing primary-key composite-key

我正在使用PostgreSQL。

在每个表中,将uuid设置为“ id”列中的主键。

这时,在某些条件子句中 当使用“ id”和“ name”作为条件时,

“ id”和“ name” [“ unique”]的复合索引有意义吗?

由于“ id”已经用作唯一键,因此我认为它后面的“名称”毫无意义。

如果是这种情况,是否不需要所有唯一列的复合索引?

谢谢!


[编辑]

PostgreSQL版本:v9.1

[我做了]

我创建了两个索引“ id”,其中“ name”组合唯一索引,而只有“ id”唯一索引。

如果我以“ id”和“ name”为条件的查询以及以“ id”为条件的查询作为执行计划,

我注意到两个执行计划使用不同的索引。

1 个答案:

答案 0 :(得分:1)

是的,附加约束是没有意义的:如果id由于是主键而唯一,则idname的组合也是唯一的。

之所以需要这种在概念上不必要的唯一约束,是因为外键必须引用主键或精确包含目标行的唯一约束。否则,可能不清楚某个外键引用了哪些约束。