Sql 创建外键是否意味着创建索引?
如果我在表Sql 创建外键是否意味着创建索引?,sql,sqlite,Sql,Sqlite,如果我在表Foo中有一列a,并且我用一列b创建了一个新表Bar,该列是Foo.a的外键,那么列b是否会自动为Bar编制索引,或者,如果我想用b=1有效地搜索Bar中的所有行,我还必须在Bar.b上创建索引吗 (如果重要的话,我正在使用SQLite。)您必须自己创建索引。至少我知道没有数据库管理系统能自动执行此操作。您必须自己创建索引。至少我知道没有一个数据库管理系统能够自动执行此操作。外键只是用于,但不会根据相关列的索引自动编制索引。索引Foo.a将加快Bar.b上的插入/更新,而索引Bar.b
Foo
中有一列a
,并且我用一列b
创建了一个新表Bar
,该列是Foo.a
的外键,那么列b
是否会自动为Bar
编制索引,或者,如果我想用b=1有效地搜索Bar
中的所有行,我还必须在Bar.b
上创建索引吗
(如果重要的话,我正在使用SQLite。)您必须自己创建索引。至少我知道没有数据库管理系统能自动执行此操作。您必须自己创建索引。至少我知道没有一个数据库管理系统能够自动执行此操作。外键只是用于,但不会根据相关列的索引自动编制索引。索引Foo.a
将加快Bar.b
上的插入/更新,而索引Bar.b
将加快Bar.b
上的选择 外键仅用于,但不会根据其相关列的索引自动索引。索引Foo.a
将加快Bar.b
上的插入/更新,而索引Bar.b
将加快Bar.b
上的选择 在SQLite中创建外键只是创建一个约束。您应该自己创建索引
在第3段结尾处:
因此,在大多数实际系统中,应该在子键上创建索引
每个外键约束的列
在SQLite中创建外键只是创建一个约束。您应该自己创建索引
在第3段结尾处:
因此,在大多数实际系统中,应该在子键上创建索引
每个外键约束的列
我误解了这个问题。我以为他在问是否会针对FK的目标创建索引(或者现在我又读了一遍,也许我没有误读它……我不知道。我应该去睡觉。不管怎样,MySQL这么做并不意味着它是必需的,只是作为一个小提示。[至于InnoDB,那是因为MyISAM不支持外键])我误读了这个问题。我以为他在问是否会针对FK的目标创建索引(或者现在我又读了一遍,也许我没有误读它……我不知道。我应该去睡觉。不管怎样,MySQL这么做并不意味着它是必需的,只是作为一个小小的旁注。[至于InnoDB,那是因为MyISAM不支持外键])