我的代码很简单。
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会自动为第一列添加索引但是第二列,第三列......我必须手动添加这个约束吗?官方文件中有任何答案吗?
答案 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