2009-12-20 26 views
0

我正在使用mySQL 5.1,想知道是否有必要在FK关系中定义它之后在列上添加CREATE INDEX语法。常识告诉我,如果列是一个键(外部或其他),那么它需要索引 - 但你永远不知道...是否创建一个FK自动索引列?

我是否必须明确地创建一个索引在我的FK - 或创建FK隐式地在列上创建索引?

回答

7

引述MySQL手册此页:13.6.4.4. FOREIGN KEY Constraints

InnoDB的要求对外国 键和参考键索引,使 外键检查可以快速,而不是 需要一个表扫描。
在 引用表中,必须有 索引,其中外键列 被列为 相同顺序的第一列。
如果索引表 不存在,则自动创建该索引 。

+1

MySQL在这方面是不寻常的,虽然我希望其他产品也会这样做。 – 2009-12-20 16:44:14

+0

+1一个有趣的效果是,在MyISAM(不支持外键)上,声明一个外键仍然会创建一个索引。 – 2009-12-20 17:04:18

+0

它不需要* unique *索引?(!) – 2009-12-20 17:28:53

相关问题