在Mysql中,其他数据完整性 - 在常规索引上使用唯一索引是否有任何性能优势? (假设数据是唯一的)
即。 - 创建需要的时间更短吗?更新?或查询常规索引的唯一索引?
答案 0 :(得分:8)
对于某些查询,查询优化器可以更有效地使用唯一索引,而不是使用普通索引。仅举一个例子,在包含唯一索引的所有列的SELECT DISTINCT
查询中,查询优化器可以发出一个跳过排序结果并消除重复的计划 - 即使计划没有明确规定使用索引!
一般来说,同一列中唯一索引与非唯一索引的性能影响取决于您的查询。
我的建议是尽可能准确地建模您的数据。如果数据的特征是某些列的组合不会在不同的行中重复,并且您打算索引这些列,则索引应该是唯一索引。
实际上,在这种情况下,您应该考虑使用唯一索引来强制执行这些列的唯一性,即使您不打算将它们编入索引。添加索引确实会增加插入,删除和一些更新的开销,但除非您对这些操作的性能不令人满意,否则最好忽略它。