Mysql 为什么在我没有指定的情况下用我的表创建这个奇怪的索引?

Mysql 为什么在我没有指定的情况下用我的表创建这个奇怪的索引?,mysql,sql,create-table,heidisql,Mysql,Sql,Create Table,Heidisql,我想用外键创建表 这是本表的方案: CREATE TABLE `SupplierOrderGoods` ( `shopOrder_id` INT(11) NOT NULL, `supplierGood_id` INT(11) NOT NULL, `count` INT(11) NOT NULL, PRIMARY KEY (`shopOrder_id`, `supplierGood_id`), CONSTRAINT `FK_SupplierOrderGood

我想用外键创建表

这是本表的方案:

CREATE TABLE `SupplierOrderGoods` (
    `shopOrder_id` INT(11) NOT NULL,
    `supplierGood_id` INT(11) NOT NULL,
    `count` INT(11) NOT NULL,
    PRIMARY KEY (`shopOrder_id`, `supplierGood_id`),
    CONSTRAINT `FK_SupplierOrderGoods_ShopOrders` FOREIGN KEY (`shopOrder_id`) REFERENCES `shoporders` (`id`),
    CONSTRAINT `FK_SupplierOrderGoods_SupplierGoods` FOREIGN KEY (`supplierGood_id`) REFERENCES `suppliergoods` (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
它有两个链接:到表SupplierGoods-FK_SupplierOrderGoods\u SupplierGoods和到表ShopOrders-FK_SupplierOrderGoods\u ShopOrders。当我在HeidiSQL或phpMyAdmin中执行此代码时,正在创建奇数索引FK\u SupplierOrderGoods\u SupplierGoods

我没有在方案中指定它,但正在创建它。当我在HeidiSQL中看到这一点时,我意识到了这一点:

此外,还可以在heidi中看到表格的创建代码:

CREATE TABLE `SupplierOrderGoods` (
    `shopOrder_id` INT(11) NOT NULL,
    `supplierGood_id` INT(11) NOT NULL,
    `count` INT(11) NOT NULL,
    PRIMARY KEY (`shopOrder_id`, `supplierGood_id`),
    ------> INDEX `FK_SupplierOrderGoods_SupplierGoods` (`supplierGood_id`),
    CONSTRAINT `FK_SupplierOrderGoods_ShopOrders` FOREIGN KEY (`shopOrder_id`) REFERENCES `shoporders` (`id`),
    CONSTRAINT `FK_SupplierOrderGoods_SupplierGoods` FOREIGN KEY (`supplierGood_id`) REFERENCES `suppliergoods` (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
我没有指定索引,但它在这里。我害怕。。。为什么?:'

为什么会出现这个索引?我想我的海蒂坏了,所以在phpmyadmin试了试,但得到了同样的结果

我想如果它是正确的。。。但为什么只有一个字段只有一个索引?如果正确,为什么不使用两个索引

使现代化 哇!我刚刚意识到,所有带有外键的表都有索引!我在谷歌上搜索了一下,找到了。这很正常,索引是用fk创建的,对吗


那么,为什么只创建一个索引,而不是两个?

可能是因为您的主键已经以另一个键开始。您是否回答了为什么只创建一个而不是两个索引的问题?当您有多字段索引时,它只能按键的顺序使用。因此,如果您有一个键ColumnA,ColumnB,它可以用于按ColumnA,ColumnB查找行,或者仅按ColumnA查找行,而不仅仅是按ColumnB查找行。我猜这就是为什么MySQL必须创建另一个索引的原因。我想,我应该为另一个字段创建另一个索引,并这样做了。我还将shopOrderId设置为索引。我说的对吗?我以为它是自动创建的。