我应该为每个外键创建索引吗?

时间:2014-11-25 14:04:02

标签: mysql

我的表部门有两列(dept_ID和dept_name) 我的另一个表是登录,我为表部门引用dept_name的列dept_name创建了一个外键。所以我创建一个名为index_department的索引,现在在登录表中,我想为列eadd创建另一个外键,它将引用名为info_table的DIFFERENT表。

我应该为第二个外键创建另一个索引??

另一种情况,我想在info_table上创建一个dept_name列。我可以使用相同的索引'index_department'??

2 个答案:

答案 0 :(得分:2)

一般的答案是,“这取决于。”

正如@ gordon-Linoff所评论的那样“您创建索引以满足查询的性能要求。”

索引占用空间并且必须维持处理时间。因此,任何给定指数的情况取决于成本和使用之间的权衡。例如,如果您的数据很少更改,但是您需要查看很多,那么您会希望获得更多索引。

我有根据的猜测是,在您可能正在工作的规模上,您确实需要所有外键上的索引。

特别是在mysql中你似乎得到的索引是你正式添加FK约束。这里讨论does mysql index foreign key columns automatically

我正式说,因为你可以隐含外键关系,而无需实际声明/强制执行约束。人们有时会这样做以避免检查/执行约束的成本。风险在于违反参照完整性的更新。但我正在漂流切线。

作为旁注,这里有一些相关的讨论does a foreign key automatically create an index

答案 1 :(得分:0)

在MySQL(至少5.6,我正在使用)中,会自动为外键创建索引。