MySQL - 唯一的外键

Cle*_*kod 7 mysql foreign-keys unique

我必须使其中一个外键独一无二.问题是,我从phpMyAdmin收到以下消息:

The following indexes appear to be equal and one of them should be removed: consignmentnumber_id_UNIQUE, fk_consignments_consignmentnumbers2

所以我的问题是:我应该被打扰吗?没有这样的索引真的很重要吗?

Jan*_*yka 14

具有键(主键,外键)的每列都需要索引.列与唯一相同.您可能创建了两个索引(一个在创建FK时,另一个在Unique约束上).如果是这种情况,只需删除其中一个索引.

DB维护两个等效索引的开销.

  • 目前我猜你有2个INDEX和UNIQUE类型的索引.如果是这种情况,您应该删除INDEX.UNIQUE是唯一的,足以满足FK的要求. (5认同)

小智 7

mysql > create unique index index_bar_id on foos(bar_id);
mysql > alter table foos add constraint index_bar_id foreign key (bar_id) references bars (id);
Run Code Online (Sandbox Code Playgroud)

阅读更多信息,请访问http://sixarm.com/about/mysql-create-indexes-foreign-keys-constraints.html


guz*_*off 5

对于未来,如果你想让你的外键唯一,你可以简单地修改你的外键列,如下所示:

ALTER TABLE your_table
MODIFY COLUMN your_fk_column [INT, VARCHAR etc.][NOT NULL] UNIQUE;
Run Code Online (Sandbox Code Playgroud)