MySQL中的外键索引

时间:2016-01-16 08:27:59

标签: php mysql

我的代码很简单。

CREATE TABLE foo (

client_id int,
order_id int,

PRIMARY KEY (client_id, order_id),
INDEX (order_id),

FOREIGN KEY (client_id) REFERENCES baz(id),
FOREIGN KEY (order_id) REFERENCES bar(id)

);

我知道MySQL会自动使用主键向列添加索引,但是如果我有复杂的主键怎么办? (在我的代码中的例子)。为什么我必须在主键的第二列添加索引?我认为MySQL会自动为第一列添加索引但是第二列,第三列......我必须手动添加这个约束吗?官方文件中有任何答案吗?

1 个答案:

答案 0 :(得分:0)

你可以参考链接 http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

如果任何表具有例如:(col1, col2, col3)的多列索引,那么您可以拥有(col1)(col1, col2)(col1, col2, col3)

如果搜索没有在索引上形成最左边的前缀(在本例中为col1

),则永远不会使用此索引

所以你需要col1作为前缀,用col2,col3搜索不会使用索引

您可能需要不同的索引,因此您必须单独索引col2