MySQL UNIQUE和INDEX在Column上使用

时间:2012-07-05 23:56:32

标签: mysql indexing unique-index

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

我没有使用用户名作为主要关键人物。

4 个答案:

答案 0 :(得分:2)

在MySQL中,只要你创建一个属性UNIQUE,它就会INDEX - 编辑。某些数据库设计人员喜欢将UNIQUE属性明确定义为INDEX,但无论您选择什么,结果都是相同的。

答案 1 :(得分:2)

UNIQUE会自动为大多数dbs创建INDEX。所以要回答你,你应该只创建一个,UNIQUE。您可以找到MySQL的相关线程here

答案 2 :(得分: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列上必须包含唯一字段,那么您应该def。创建两者,如果没有,则只需将用户名设置为主键即索引。

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

What are differences between Index v.s. Key in MySQL

答案 3 :(得分:0)

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

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