MySQL唯一键和索引

8
在MySQL中,如果我在两列上创建唯一键,比如
UNIQUE KEY my_key (column1, column2)
那么是否需要在column1上建立另一个键?我的目标是使column1和column2唯一,并且我将使用column1进行很多选择操作。

1
刚刚使用EXPLAIN做了一个实验,看起来我不需要在column1上创建另一个键,因为MySQL在按column1进行选择时会使用唯一键。 - Beier
3个回答

12

不需要单独为column1创建索引,因为(column1, column2)的复合索引已经能够胜任。

但是如果你只想搜索(column2),那么你可能需要单独为column2创建一个新的索引,因为复合索引(column1, column2)在这种情况下不是最好的选择。


8
不,你的“my_key”索引已经处理了任何关于“column1”的查询或者“column1”和“column2”的条件。但是,如果你只查询“column2”,那么你应该添加一个额外的“column2”索引以便更有效地查询它。
此外,如果“column1”和“column2”都是唯一的,那么你可能需要考虑使用类似以下的东西:
[...]
UNIQUE(column1),
UNIQUE(column2),
PRIMARY KEY (column1, column2);

这确保了column1column2都是唯一的,并且任何仅选择column1column2的查询都可以使用索引访问来检索。


2

UNIQUE-index是一个。该索引已排序,因此您不需要第二个索引在第一列上。组合的排序顺序也适用于仅第一列,但不适用于仅第二列。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接