【问题标题】:Does MySQL InnoDB always require an index for each foreign key constraint?MySQL InnoDB 是否总是需要每个外键约束的索引?
【发布时间】:2010-12-15 20:43:17
【问题描述】:

我正在使用 phpMyAdmin。为了使用 InnoDB 设置外键约束(在“结构”选项卡上的“关系视图”链接下),看来我需要为要添加约束的字段添加索引。这显然会对表上的插入/更新性能产生影响,特别是如果我想添加几个约束。是否可以在 InnoDB 中指定外键约束或关系完整性而不需要为所需字段创建索引?

非常感谢 JS,伦敦

【问题讨论】:

    标签: mysql foreign-keys innodb


    【解决方案1】:

    外键约束将一个键指向另一个键。外键也是索引。
    所以是的,您需要索引列(具有唯一性或外键)以在外键约束中使用它们。

    有 3 种类型的索引可用:
    - 主键
    - 唯一索引
    - 非唯一索引

    【讨论】:

      【解决方案2】:

      来自MySQL reference manual

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-24
        • 1970-01-01
        • 2013-05-21
        • 2016-03-19
        • 2010-12-07
        • 2019-01-04
        • 2011-04-28
        • 2015-05-12
        相关资源
        最近更新 更多