【发布时间】:2015-03-26 07:08:45
【问题描述】:
在 Mysql 中,除数据完整性之外 - 与常规索引相比,使用唯一索引是否有任何性能优势? (假设数据是唯一的)
即- 创作时间会更短吗?更新?还是在常规索引上查询唯一索引?
【问题讨论】:
-
您可以考虑以下注意事项:stackoverflow.com/questions/1293499/…
标签: mysql performance indexing
在 Mysql 中,除数据完整性之外 - 与常规索引相比,使用唯一索引是否有任何性能优势? (假设数据是唯一的)
即- 创作时间会更短吗?更新?还是在常规索引上查询唯一索引?
【问题讨论】:
标签: mysql performance indexing
对于某些查询,查询优化器可以比使用普通索引更有效地使用唯一索引。仅举一个例子,在一个包含唯一索引的所有列的SELECT DISTINCT 查询中,查询优化器可以发出一个跳过对结果进行排序并消除重复项的计划——即使该计划没有明确使用索引!
不过,一般而言,唯一索引与非唯一索引对同一列的性能影响取决于您的查询。
我的建议是尽可能准确地为您的数据建模。如果您的数据的一个特征是某个列组合不会在不同的行中重复,并且您打算为这些列建立索引,那么该索引应该是唯一索引。
确实,在这种情况下,您应该考虑使用唯一索引来强制这些列的唯一性,即使您不打算为它们编制索引。添加索引确实会为插入、删除和某些更新增加一些开销,但除非您对这些操作的性能不满意,否则最好忽略它。
【讨论】:
WHERE 条件和/或连接谓词时,它们通常是最有效的。尽管有时索引可以通过覆盖所有被选择的列来提供一些优势,但这并不是选择要定义的索引的好策略。请记住,通常,查询中的每个表最多使用一个索引。另请记住,许多因素会影响查询性能,因此您需要进行测试,有时还需要进行调整。