使用索引查询时,1个复合索引键和单独的索引键之间有什么区别

时间:2014-10-03 10:04:03

标签: mysql

使用索引查询时,1个复合索引键和单独的索引键有什么区别?

`users` (
 **KEY `index` (`email`,`name`)**
)

`users` (
 **KEY `email`(`email`),
 KEY `name`(`name`)**
)

2 个答案:

答案 0 :(得分:0)

第一个允许行对两个字段施加一个唯一约束,即允许跟随行

email         name
a@b.com       user1
a@b.com       user2
b@b.com       user2
a@b.com       user1 ----> Invalid

虽然第二个要求两个列都是唯一的。

email         name
a@b.com       user1
a@b.com       user2 ----> Invalid
b@c.com       user3
d@e.com       user4
d@f.com       user4 ----> Invalid

现实生活场景将通过他们的名字作为关键来识别班级中的学生。可能有许多同名的学生,因此自然不能被强加为独特的。但是,在这种情况下,具有姓名和出生日期的复合密钥将被证明是一个很好的关键。

答案 1 :(得分:0)

这是故事的一小部分......

请考虑以下事项:

country        continent governance              population
Afghanistan    Asia      Islamic Republic                31
Albania        Europe    Constitutional Republic          3
France         Europe    Constitutional Republic         66
India          Asia      Constitutional Republic       1210
Mauritania     Africa    Islamic Republic                 3
Spain          Europe    Consitutional Monarchy          47
United Kingdom Europe    Consitutional Monarchy          64

如果我想寻找治理是“伊斯兰共和国”的亚洲国家。那么(continentgovernance)的索引就会有用。 但是,如果我想搜索一般治理的国家是伊斯兰共和国'那么我就无法使用这个索引了。我可以使用(governancecontinent)或仅使用(governance)。