,如果我在两列上创建一个唯一键,比如说
独特的钥匙my_key
(column1
,column2
)
是否有必要在column1
上构建另一个密钥?我的目标是让column1和column2是唯一的,我会做很多由column1键入的选择。
答案 0 :(得分:11)
不,没有必要,因为可以使用(column1,column2)上的索引而不是column1的索引。
您可能希望仅在第二列上创建一个新索引,因为当仅搜索(column2)时索引(column1,column2)不好。
答案 1 :(得分:8)
不,您的my_key
索引会处理column1
上的任何查询或column1
和column2
上的条件。但是,如果仅对column2
进行查询,则应为column2
添加其他索引,以便能够有效地进行查询。
此外,如果column1
和column2
都是唯一的,那么您可能需要考虑使用类似
[...]
UNIQUE(column1),
UNIQUE(column2),
PRIMARY KEY (column1, column2);
这可确保column1
和column2
都是唯一的,并且只能选择column1
和column2
的任何查询都可以使用仅索引访问进行检索。
答案 2 :(得分:2)
UNIQUE-index是btree-index。这个索引是排序的,这就是你不需要第一个colummn的第二个索引的原因。组合的排序顺序也仅适用于第一列,但不适用于第二列。