MySQL是否为外键自动编制索引?

时间:2012-06-28 13:02:50

标签: mysql indexing foreign-keys myisam isam

有人能告诉我MySQL是否自动为其外键编制索引?

我的MySQL正在使用MyIsam Engine。

2 个答案:

答案 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,如前所述。

相关问题