SQLite子表列的索引已经是多列唯一约束的一部分

时间:2017-02-11 14:56:11

标签: sqlite indexing foreign-keys

给定具有PK列p的父表id和具有PK列cfoo的子表barcfoo引用pid

  1. (为什么)我应该在cfoo上创建索引吗?
  2. 如果cbar不存在怎么办?

1 个答案:

答案 0 :(得分:1)

唯一严格的要求是在父表上; documentation说:

  

通常,外键约束的父键是父表的主键。如果它们不是主键,则父键列必须共同受UNIQUE约束或具有UNIQUE索引。

子表没有这样的要求。但是,有时会在子表中搜索特定的键值(例如,删除父行时),所以

  

应在每个外键约束的子键列上创建索引。

如果foo列是索引中的第一列,则索引可用于有效搜索foo中的值。 (显式和隐式(PK)指数之间没有区别。)