有人能告诉我MySQL是否自动为其外键编制索引?
我的MySQL正在使用MyIsam Engine。
答案 0 :(得分:6)
MyISAM根本不支持外键。来自manual:
对于InnoDB以外的存储引擎,MySQL Server解析FOREIGN CREATE TABLE语句中的KEY语法,但不使用或存储它。 ......在稍后阶段,将实施外键约束 MyISAM表也是如此。
这适用于下一版本的MySQL 5.6,因此尚未实现。对于旧版本,文本完全相同。
这意味着根本不使用外键构造。您可以在CREATE TABLE
命令中指定它,但MySQL会默默地忽略它。不会创建任何索引,也不会存储它(因此{em} 命令将 显示您尝试创建外键。
如果您需要外键支持,请考虑使用InnoDB存储引擎。 InnoDB自动为外键创建索引。
答案 1 :(得分:1)
MyISAM引擎不支持外键,只支持InnoDB引擎:
http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
InnoDB需要外键和引用键的索引 外键检查可以很快,不需要表扫描。在里面 引用表时,必须有一个索引所在的外键 列以相同顺序列为第一列。这样的 如果不是,则会自动在引用表上创建索引 存在。如果您创建,可能会稍后以静默方式删除此索引 另一个可用于强制执行外键约束的索引。 如果给定,则使用index_name,如前所述。