1

我想为名为“用户名”的列添加快速查找和唯一性的索引。我看到一个选项可以选择UNIQUEINDEX。我应该创建两者,还是只使用 UNIQUE?

我没有使用用户名作为主键。

4

4 回答 4

2

在 MySQL 中,每当你创建一个属性UNIQUE时,它也会被INDEX-ed 。一些数据库设计者也喜欢将UNIQUE属性显式定义为INDEX,但无论您选择什么,结果都是一样的。

于 2012-07-06T00:59:31.613 回答
2

UNIQUEINDEX为大多数数据库自动创建一个。因此,要回答您,您应该只创建一个,即UNIQUE. 您可以在此处找到MySQL的相关线程

于 2012-07-07T01:35:18.347 回答
0

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

 CREATE TABLE `users` (
    `username`,
     PRIMARY KEY (`username`),
     UNIQUE KEY `new_mmp_id` (`username`)
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1

因此,最后,您在username字段上拥有一个索引,该索引本身就是一个唯一字段。它也是主键,自动成为索引。您从未解释表中的特定字段,例如您是否需要自动增量 id 字段

Should I create both, or just go with UNIQUE?

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

我建议你阅读这篇文章 http://www.xaprb.com/blog/2009/09/12/the-difference-between-a-unique-index-and-primary-key-in-mysql/

MySQL中的索引与键有什么区别

于 2012-07-06T00:04:21.083 回答
0

我的预感是UNIQUE会给你最好的性能提升,但INDEX也会给你一个提升。我认为您不想使用的唯一原因UNIQUE是您不希望 MySQL 在您执行 anINSERT或 an时处理检查唯一值UPDATE

我认为你不需要两者。但我不是专家。

于 2012-07-06T00:08:52.967 回答