指数多列的唯一约束
问题描述:
鉴于父表p
与PK列id
和子表c
与PK列foo
和bar
已经部分。 c
。 foo
参考文献p
。 id
。指数多列的唯一约束
- (为什么)我应该在
c
上创建一个索引。foo
还是不? - 而如果
c
。bar
不存在?
答
唯一严格的要求是对母表; documentation说:
通常,外键约束的父键是父表的主键。如果它们不是主键,那么父键列必须共同受到UNIQUE约束或具有UNIQUE索引。
没有为子表没有这样的要求。不过,也有当子表中搜索特定键值的情况下(例如,当父行被删除),所以
的指数应该在孩子中创建的每个外键约束的键列。
如果foo
列是索引的第一列,则索引可以被用来在foo
有效地搜索值。 (显性和隐性(PK)指数没有区别)。