【问题标题】:Decision to use KEY or UNIQUE KEY决定使用 KEY 还是 UNIQUE KEY
【发布时间】:2015-06-13 11:00:29
【问题描述】:

我了解 UNIQUE KEY 是唯一索引,KEY 是非唯一索引。我已经读过,在唯一索引的情况下插入数据可能会导致一些 IO。

如果我们不必依赖数据库的唯一性并且我们仍然希望使用列“b”进行快速查找,您是否建议使用非唯一索引 (KEY) 而不是唯一索引 (UNIQUE KEY) ?

【问题讨论】:

  • 如果使用唯一索引会很糟糕,那么我们为什么要使用这些索引呢?如果数据是唯一的,则使用它们是清晰和干净的数据库设计。
  • 什么情况下可以不依赖db的唯一性?任何插入操作都会导致一些 I/O,这不是可以避免的。

标签: mysql indexing unique-index


【解决方案1】:

唯一和非唯一索引都会导致 INSERTDELETEUPDATE 语句的 I/O 操作。索引开销的数量应该几乎相同。不同的是,唯一索引可能会导致INSERTUPDATE在正常使用下失败(当然,操作可能由于其他原因而失败,例如磁盘已满,但这是一种不寻常的情况)。

我不明白这句话:“如果我们不必依赖数据库来实现唯一性”。表中的UNIQUE 属性是对组成键的列的描述。数据库的功能之一就是维护数据的完整性,所以让数据库做它的设计。

至于性能,我认为唯一索引和非唯一索引之间没有显着差异。对于某些操作,唯一索引可能稍微更加优化,因为编译器知道单个查找只返回一行。实际上,索引查找和返回一行的索引扫描之间的差异可能非常小。

【讨论】:

    猜你喜欢
    • 2011-04-20
    • 2012-06-10
    • 2013-01-14
    • 1970-01-01
    • 2012-11-20
    • 2015-04-22
    • 2012-03-01
    • 1970-01-01
    相关资源
    最近更新 更多