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
编制索引