mysql唯一键和索引

Bei*_*ier 8 mysql

在MySQL中,如果我在两列上创建一个唯一键,比如说

独特的钥匙my_key(column1,column2)

是否有必要建立另一个关键column1?我的目标是让column1和column2是唯一的,我会做很多由column1键入的选择.

Mar*_*ers 12

不,这不是必需的,因为可以使用(column1,column2)上的索引而不是column1的索引.

您可能希望仅在第二列上创建一个新索引,因为当仅搜索(column2)时索引(column1,column2)不好.


Pat*_*and 8

不,您的my_key索引会处理column1column1AND 的任何查询或条件column2.但是,如果仅进行查询column2,则应添加其他索引以便column2能够有效地进行查询.

此外,如果两个column1column2是唯一的,那么你可能要考虑使用类似

[...]
UNIQUE(column1),
UNIQUE(column2),
PRIMARY KEY (column1, column2);
Run Code Online (Sandbox Code Playgroud)

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