1

如果我a在表中有一个列Foo,并且我创建了一个具有作为外键的列的新表Bar,那么该列是否会自动为其编制索引,或者如果我想有效地搜索其中的所有行,我还必须创建一个索引吗?bFoo.abBarBar.bBarb = 1

(如果重要的话,我正在使用 SQLite。)

4

3 回答 3

3

外键仅用于“强制存在表之间的关系”,但不会根据其相关列的索引自动建立索引。索引Foo.a将加速 上的插入/更新Bar.b,而索引Bar.b将加速 上的选择Bar.b

于 2013-02-26T22:01:58.710 回答
3

在 SQLite 中创建外键只是创建一个约束。您应该自己创建索引。

文档中,接近第 3 段的末尾:

因此,在大多数实际系统中,应该在每个外键约束的子键列上创建索引。

于 2013-02-26T22:03:19.367 回答
1

您必须自己创建索引。至少我知道没有自动执行它的 DBMS。

于 2013-02-26T21:55:47.680 回答