带主键的唯一复合索引
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
作为主键是唯一的,那么 id
和 name
的组合也是唯一的。
之所以需要这个概念上不必要的唯一约束,是因为外键必须引用一个主键或唯一包含确切目标行的约束。否则可能不清楚某个外键引用了几个约束中的哪一个。
我正在使用 postgresql。
在每个table中,uuid被设置为“id”列中的主键。
此时,在某些条件从句中 当使用“id”和“name”作为条件时,
“id”和“name”的复合索引[“unique”]有意义吗?
既然“id”已经被用作唯一键,我认为后面的“name”是没有意义的。
如果是这种情况,是否不需要为所有唯一列创建复合索引?
谢谢!
[编辑]
PostgreSQL 版本:v9.1
[我做了]
我创建了两个索引“id”,其中包含“name”复合唯一索引和仅“id”唯一索引。
如果我将以“id”和“name”为条件的查询以及以“id”为条件的查询作为执行计划,
我注意到两个执行计划使用了不同的索引。
是的,那个额外的约束是没有意义的:如果 id
作为主键是唯一的,那么 id
和 name
的组合也是唯一的。
之所以需要这个概念上不必要的唯一约束,是因为外键必须引用一个主键或唯一包含确切目标行的约束。否则可能不清楚某个外键引用了几个约束中的哪一个。