将两个索引添加到MySql中的同一字段

时间:2013-01-29 11:12:19

标签: mysql indexing unique-key

我有一张这样的桌子:

东西
a [INT]
b [INT]
c [INT]

...其中 a b c 是分开的外键,指向三个不同的表。 ID 。由于我想让所有注册表都是唯一的,并且在阅读this great answer之后,我认为我应该以这种方式创建一个新的索引:UNIQUE INDEX(a, b, c)和(在我的情况下)做IGNORE INSERTS。

但正如你所看到的,我会为每列提供一个KEY,然后是另一个包含所有三个的额外UNIQUE INDEX。这是正常的事吗?这对我来说似乎很奇怪,我从未见过它。

2 个答案:

答案 0 :(得分:1)

在多个索引中包含列是完全正常和合理的。但是,如果(a,b,c)的组合足以唯一地标识一行,那么您在这里似乎需要PRIMARY索引而不是UNIQUE索引(技术上差别很小,但在语义上它可能是更好的选择。)

答案 1 :(得分:-1)

如果某些内容(a,b,c)创建主键,则无法满足对唯一索引的需求。如果您的主键是Something(a,b)并且您想要一个唯一索引(a,b,c),那么另一个唯一索引就有意义。但由于所有三列都是Foreignkey,因此您可以使用主键索引。