MySql唯一索引与索引速度

epe*_*leg 6 mysql indexing performance

在Mysql中,其他那么数据完整性 - 在常规索引上使用唯一索引是否有任何性能优势?(假设数据是唯一的)

即 - 创建需要更少的时间吗?更新?或查询常规索引的唯一索引?

Joh*_*ger 11

对于某些查询,查询优化器可以更有效地使用唯一索引,而不是使用普通索引.仅举一个例子,在SELECT DISTINCT包含唯一索引的所有列的查询中,查询优化器可以发出一个跳过排序结果并消除重复的计划 - 即使计划没有明确使用索引!

但是,一般来说,在同一列上,唯一索引与非唯一索引的性能影响取决于您的查询.

我的建议是尽可能准确地建模您的数据.如果数据的特征是某些列的组合不会在不同的行中重复,并且您打算索引这些列,则索引应该是唯一索引.

实际上,在这种情况下,您应该考虑使用唯一索引来强制执行这些列的唯一性,即使您不打算将它们编入索引.添加索引确实会增加插入,删除和一些更新的开销,但除非您对这些操作的性能不令人满意,否则最好忽略它.

  • @Qubei,除非你生活在岩石下 - “这取决于”是任何好的答案中最真实的一点。因为一切都是相对的,正确的解决方案总是取决于每个人的具体问题的情况。 (3认同)
  • 这是一个写得很好的回答,但“取决于”是一个很弱的答案。 (2认同)