mysql唯一键和索引

时间:2010-03-10 21:14:48

标签: mysql

MySQL中的

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

独特的钥匙my_keycolumn1column2

是否有必要在column1上构建另一个密钥?我的目标是让column1和column2是唯一的,我会做很多由column1键入的选择。

3 个答案:

答案 0 :(得分:11)

不,没有必要,因为可以使用(column1,column2)上的索引而不是column1的索引。

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

答案 1 :(得分:8)

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

此外,如果column1column2都是唯一的,那么您可能需要考虑使用类似

的内容
[...]
UNIQUE(column1),
UNIQUE(column2),
PRIMARY KEY (column1, column2);

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

答案 2 :(得分:2)

UNIQUE-index是btree-index。这个索引是排序的,这就是你不需要第一个colummn的第二个索引的原因。组合的排序顺序也仅适用于第一列,但不适用于第二列。