create table foo (id, name)
create table bar (id, foo_id, value, ...)
我们为foo_id
引用foo(id)
创建了一个外键关系,这似乎是隐式地为同一列创建索引。我们还需要根据foo_id, value
中的bar
创建复合索引。
以上述方式声明索引是否有意义,或者在上述情况下是否有优化索引创建的方法?
答案 0 :(得分:1)
这取决于你如何使用它。 索引用于加速查询的执行,外键用于使数据库的内容保持一致。
说到外键,这是Foreign Key constraints documentation的一部分:
InnoDB需要外键索引和引用键,以便外键检查速度快,不需要进行表扫描。
因此,创建外键时创建的索引一切正常。