Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 创建外键是否意味着创建索引?_Sql_Sqlite - Fatal编程技术网

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不支持外键])