【问题标题】:MySQL: unique field needs to be an index?MySQL:唯一字段需要是索引吗?
【发布时间】:2012-03-12 16:31:41
【问题描述】:

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

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

【问题讨论】:

标签: mysql indexing field unique


【解决方案1】:

,您不必再次对其编制索引。当您指定UNIQUE KEY 时,该列被索引。所以它与相同类型的其他索引列(例如PRIMARY KEY)在性能上没有差异。

但是如果类型不同,性能差别不大。

【讨论】:

  • 好很多 tks :D 。搜索过程中唯一键和索引键的性能有何不同?
  • @Tom 如果两者都被索引,则没有区别。再读一遍我的答案。
  • 如果所有列都在唯一键约束下,它们都会被索引?
  • @Poria 是的。要添加唯一约束,数据库需要知道值是否已经存在。为此,它需要被索引。否则每次插入操作都会很慢。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    如果该字段需要是唯一的,那么它应该是PRIMARY KEYUNIQUE INDEX

    至于UNIQUE INDEXINDEX 之间的性能,选择时没有区别,因为两者都将使用相同的算法,即散列或b-tree。只是使用UNIQUE 索引,尤其是数字,即INT 索引,它将比包含重复项的索引更快,因为诸如 b-tree 之类的算法能够更有效地到达请求的行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-16
      • 2015-06-16
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 2021-12-15
      相关资源
      最近更新 更多