MySQL InnoDB是否总是需要每个外键约束的索引?

时间:2009-11-12 12:29:24

标签: mysql foreign-keys innodb

我正在使用phpMyAdmin。为了使用InnoDB设置外键约束(在Structure选项卡上的“Relation View”链接下),我似乎需要为要添加约束的字段添加索引。这显然会影响表上插入/更新的性能,特别是如果我想添加几个约束。是否可以在InnoDB中指定外键约束或关系完整性而无需为必填字段创建索引?

非常感谢 JS,伦敦

2 个答案:

答案 0 :(得分:7)

来自MySQL reference manual

  

InnoDB需要外国索引   键和引用键,以便   外键检查可以快速而不是   需要进行表扫描。在里面   引用表,必须有一个   索引所在的外键列   被列为第一列   同样的顺序。创建了这样的索引   在引用表上自动   如果它不存在。 (这是在   与一些旧版本形成鲜明对比   必须创建哪些索引   明确地或创造外国的   关键约束会失败。)

答案 1 :(得分:1)

外键约束指的是另一个的1键。外键也是一个索引 所以是的,您需要索引collumn(使用unique或使用外键)以在外键约束中使用它们。

有三种类型的索引:
- 主键
- 独特的指数
- 非唯一索引