同一个表上的外键和唯一索引

时间:2014-12-21 12:55:21

标签: mysql

我有这张桌子:

CREATE TABLE `sites_routing` (
`origin_site_id` int(11) NOT NULL,
`destination_site_id` int(11) NOT NULL,
`distance_meters` int(11) DEFAULT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` varchar(45) NOT NULL DEFAULT 'walking',
PRIMARY KEY (`id`)
)

我想为列origin_site_id和destination_site_id创建两个外键,而不是3列上的另一个唯一索引:origin_site_id,destination_site_id和type。如果我这样做,mysql在读取和写入表时变得非常慢,我可以在错误日志中看到类似的东西:

sites_routing包含InnoDB内部的4个索引,这与InnoDB中的ns 4索引数量不同,后者与MySQL中定义的索引3的数量不同

但是,如果我尝试删除fks和索引并在唯一键存在时重新创建fks,则mysql允许我使用唯一键作为索引创建一个fk,但对于另一个,它会自动创建另一个索引。

最好的方式是什么?

0 个答案:

没有答案