MySQL InnoDB是否总是需要为每个外键约束都创建一个索引?

3
我正在使用phpMyAdmin。为了在InnoDB下设置外键约束(在“结构”选项卡上的“关系视图”链接下),似乎需要为要添加限制的字段添加索引。这显然会影响表中插入/更新的性能,特别是如果我想添加几个约束。是否可以在不需要为所需字段创建索引的情况下指定InnoDB中的外键约束或关系完整性?谢谢。JS,伦敦
2个回答

7
根据MySQL参考手册,InnoDB需要在外键和引用键上建立索引,以便外键检查可以快速进行而不需要进行表扫描。在引用表中,必须有一个索引,其中外键列按相同顺序列出为第一列。如果该索引不存在,则会自动在引用表上创建此类索引。(这与某些旧版本形成对比,在这些版本中,必须显式创建索引或者创建外键约束将失败。)

1
一个外键约束将1个键引用到另一个键。外键也是一个索引。
因此,是的,您需要为列创建索引(使用唯一或外键),以便在外键约束中使用它们。
有3种类型的索引可用:
- 主键
- 唯一索引
- 非唯一索引

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接