MySQL:唯一字段需要成为索引吗?

57

我在表中有一个UNIQUE字段,需要快速搜索。我需要对它进行索引吗?

搜索唯一字段和索引字段的速度或资源使用是否会有所不同?


阅读:http://explainextended.com/2009/04/23/making-an-index-unique/ - xkeshav
3个回答

80

不需要重新索引。当您指定UNIQUE KEY时,该列已经被索引了。因此,在性能上与其他相同类型的索引列(例如PRIMARY KEY)没有区别。

但是,如果类型不同,则会有一些性能差异。


1
好的,非常感谢:D。在搜索过程中,唯一键和索引键的性能有什么区别? - TomSawyer
1
@Tom 如果两者都被索引,那么它们之间没有区别。请再次阅读我的回答。 - Shiplu Mokaddim
那么,如果它们处于唯一键约束条件下,所有列都会被索引吗? - Pardeep Poria
@Poria 是的。为了添加唯一约束,数据库需要知道该值是否已存在。为此,它需要被索引。否则每个插入操作都会非常缓慢。 - Shiplu Mokaddim

15

每个UNIQUE字段都按定义使用UNIQUE INDEX进行索引 - 这也恰好是最快的可搜索访问路径。


10
如果字段需要是唯一的,那么它应该是 PRIMARY KEY 或者 UNIQUE INDEX
关于 UNIQUE INDEXINDEX 之间的性能,在选择时没有区别,因为两者都将使用相同的算法,即哈希或B树。只是使用 UNIQUE 索引,特别是数字类型的 INT ,它比包含重复项的索引更快,因为像 B 树这样的算法可以更有效地获取所请求的行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接