当我没有指定时,为什么用我的表创建这个奇怪的索引?

时间:2014-06-15 23:00:13

标签: 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_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_SupplierGoods和表ShopOrders - FK_SupplierOrderGoods_ShopOrders。当我在HeidiSQL或phpMyAdmin中执行此代码时,正在创建奇数索引FK_SupplierOrderGoods_SupplierGoods

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

image

此外,有可能在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;

我没有指定INDEX,但它就在这里。我很害怕......为什么? :'(

为什么会出现这个指数?我认为我的heidi已经坏了,所以在phpmyadmin中试过,但结果相同。

我认为它是否可以正确...但为什么只有1个字段的1个索引?为什么不是两个索引,如果它是正确的?

更新

哇!我刚才意识到,所有带外键的表都有索引!我用Google搜索并找到了this。所以它是正常的,用fk创建索引,对吧?

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

0 个答案:

没有答案