我想为名为“Username”的列添加快速查找和唯一性的索引。我看到了选择UNIQUE
或INDEX
的选项。我应该创建两者,还是只使用UNIQUE?
我没有使用用户名作为主要关键人物。
答案 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/
答案 3 :(得分:0)
我的预感UNIQUE
会给你带来最好的性能提升,但INDEX
也会带来提升。我认为您不想使用UNIQUE
的唯一原因是,如果您不希望MySQL在执行INSERT
或UPDATE
时处理唯一值的检查。
我认为你不需要两者。但我不是专家。