带主键的唯一复合索引

Unique composite index with primary key

我正在使用 postgresql。

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

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

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

既然“id”已经被用作唯一键,我认为后面的“name”是没有意义的。

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

谢谢!


[编辑]

PostgreSQL 版本:v9.1

[我做了]

我创建了两个索引“id”,其中包含“name”复合唯一索引和仅“id”唯一索引。

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

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

是的,那个额外的约束是没有意义的:如果 id 作为主键是唯一的,那么 idname 的组合也是唯一的。

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