MySQL在列上的唯一和索引使用

MySQL在列上的唯一和索引使用,mysql,indexing,unique-index,Mysql,Indexing,Unique Index,我想为名为Username的列添加一个索引,用于快速查找和唯一性。我看到一个选择UNIQUE或INDEX的选项。我应该两者都创建,还是只使用UNIQUE 我不使用用户名作为主键。表上的主键也自动成为mySql中的索引。因此,如果希望将列作为索引和唯一键,则可以创建如下表: CREATE TABLE `users` ( `username`, PRIMARY KEY (`username`), UNIQUE KEY `new_mmp_id` (`username`)

我想为名为Username的列添加一个索引,用于快速查找和唯一性。我看到一个选择UNIQUE或INDEX的选项。我应该两者都创建,还是只使用UNIQUE


我不使用用户名作为主键。

表上的主键也自动成为mySql中的索引。因此,如果希望将列作为索引和唯一键,则可以创建如下表:

 CREATE TABLE `users` (
    `username`,
     PRIMARY KEY (`username`),
     UNIQUE KEY `new_mmp_id` (`username`)
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
最后,你在用户名字段上有一个索引,它本身就是一个唯一的字段。它也是主键,是一个自动索引。您从未解释过表中的特定字段,例如如果需要自动增量id字段

我应该两者都创建,还是只使用UNIQUE

如果用户名列上必须有唯一字段,则应定义。创建两者,如果不是,那么只需将用户名设置为作为索引的主键

我建议你读这篇文章


表上的主键也自动成为mySql中的索引。因此,如果希望将列作为索引和唯一键,则可以创建如下表:

 CREATE TABLE `users` (
    `username`,
     PRIMARY KEY (`username`),
     UNIQUE KEY `new_mmp_id` (`username`)
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
最后,你在用户名字段上有一个索引,它本身就是一个唯一的字段。它也是主键,是一个自动索引。您从未解释过表中的特定字段,例如如果需要自动增量id字段

我应该两者都创建,还是只使用UNIQUE

如果用户名列上必须有唯一字段,则应定义。创建两者,如果不是,那么只需将用户名设置为作为索引的主键

我建议你读这篇文章

我的直觉是独一无二的,这会给你带来最好的表现提升,但指数也会给你带来提升。我认为您不想使用UNIQUE的唯一原因是,您不想让MySQL在执行插入或更新时处理惟一值的检查

我不认为你们两个都需要。但我不是专家。

我的直觉是独一无二的,这会给你带来最好的性能提升,但索引也会给你带来提升。我认为您不想使用UNIQUE的唯一原因是,您不想让MySQL在执行插入或更新时处理惟一值的检查



我不认为你们两个都需要。但我不是专家。

在MySQL的引擎盖下,每当你使一个属性唯一时,它也会被索引。一些数据库设计师喜欢显式地将唯一属性定义为索引,但无论您选择什么,结果都是一样的。

在MySQL的引擎盖下,每当您使属性唯一时,它也会被索引。一些数据库设计师喜欢显式地将UNIQUE属性定义为索引,但无论您选择什么,结果都是一样的。

UNIQUE会为大多数数据库自动创建索引。所以为了回答你,你应该只创建一个,它是独一无二的。您可以找到MySQL的相关线程

UNIQUE为大多数数据库自动创建索引。所以为了回答你,你应该只创建一个,它是独一无二的。您可以找到MySQL的相关线程

在编辑之前,您正在向他解释UNIQUE在索引方面做了什么,但什么都没有。OP询问在他的案例中选择哪一个u作为答案。此外,即使在编辑之后,我觉得谈论索引和键之间差异的链接也不是一个正确的答案。此外,我相信如果将属性设为主键,它在默认情况下是唯一的。我通常使用唯一键,以便在表上也有一个自动增量ID字段。这意味着ID字段是主键,但用户名字段也是唯一的,因此其他行不能包含现有ID字段和用户名字段的组合。谁说我使用用户名作为主键?在编辑之前,你向他解释了unique的功能,没有任何索引。OP询问在他的案例中选择哪一个u作为答案。此外,即使在编辑之后,我觉得谈论索引和键之间差异的链接也不是一个正确的答案。此外,我相信如果将属性设为主键,它在默认情况下是唯一的。我通常使用唯一键,以便在表上也有一个自动增量ID字段。这意味着ID字段是主键,但用户名字段也是唯一的,因此其他行不能同时包含现有的id字段和用户名字段谁说我使用用户名作为主键?我假设unique不会创建类似于索引的索引以进行快速查找。您可能会错误地假设。我假设unique不会创建类似于索引的索引用于快速查找。您可能会错误地假设。一个unique使其同时具有这两个属性,但索引不会使其唯一。所以两个结果都不一样。是的,你是对的,但是他问对于一个唯一的元素最好做什么,所以我假设你需要使用唯一的任何一种方式,但是如果他想添加索引是他的选择。我将重新措辞我的答案,使之更加清楚。。。tnxA unique使两者兼而有之,但索引不能使其统一
ue。所以两个结果都不一样。是的,你是对的,但是他问对于一个唯一的元素最好做什么,所以我假设你需要使用唯一的任何一种方式,但是如果他想添加索引是他的选择。我将重新措辞我的答案,使之更加清楚。。。tnx