索引会为某个列创建两次

时间:2011-11-17 08:39:57

标签: mysql sql

create table foo (id, name)
create table bar (id, foo_id, value, ...)

我们为foo_id引用foo(id)创建了一个外键关系,这似乎是隐式地为同一列创建索引。我们还需要根据foo_id, value中的bar创建复合索引。

以上述方式声明索引是否有意义,或者在上述情况下是否有优化索引创建的方法?

1 个答案:

答案 0 :(得分:1)

这取决于你如何使用它。 索引用于加速查询的执行,外键用于使数据库的内容保持一致。

说到外键,这是Foreign Key constraints documentation的一部分:

  

InnoDB需要外键索引和引用键,以便外键检查速度快,不需要进行表扫描。

因此,创建外键时创建的索引一切正常。