Php MySQL中外键的索引

Php MySQL中外键的索引,php,mysql,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会自动向带有主键的列添加索引,但如果我有复杂的主键呢?(我的代码中的示例)。为

我有简单的代码

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只会自动为第一列添加索引,但会自动为第二列、第三列添加索引。。。我必须手动添加此约束吗?官方文件中有任何答案吗?

您可以参考该链接

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

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

因此,您需要将
col1
作为前缀,使用
col2、col3
进行搜索时不会使用索引

您可能需要一个不同的索引,因此您必须分别为
col2
编制索引

您可以参考该链接

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

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

因此,您需要将
col1
作为前缀,使用
col2、col3
进行搜索时不会使用索引

您可能需要一个不同的索引,因此必须分别为
col2
编制索引