外键可以使用唯一索引吗?

时间:2014-10-07 18:24:52

标签: mysql

我在列上创建了一个唯一索引,然后使用ALTER TABLE添加了一个外键。 MySQL在列的唯一索引之上添加了一个非唯一索引。是否需要非唯一索引?它会以任何方式加快速度吗?

1 个答案:

答案 0 :(得分:1)

Does it speed things up in any way?

首先,索引并不总能加快速度。索引会降低update,insert和delete语句的速度,因为索引必须与数据一起更新。

其次,有些情况下,mysql-optimizer可能会决定使用错误的索引,而使用另一个Index可能会更快。

Is the non-unique index necessary?

没有。另请参阅有关您的用例的mysql文档,如果您反过来这样做:

http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

  

MySQL要求外键和引用键上的索引   外键检查可以很快,不需要表扫描。在里面   引用表时,必须有一个索引所在的外键   列以相同顺序列为第一列。这样的   如果不是,则会自动在引用表上创建索引   存在。 如果您创建,可能会稍后以静默方式删除此索引   另一个可用于强制执行外键约束的索引。