MySql 唯一索引与索引速度
MySql unique index vs. index speed
在 Mysql 中,除了数据完整性之外 - 与常规索引相比,使用唯一索引是否有任何性能优势? (假设数据是唯一的)
即- 创作时间会更短吗?更新?还是在常规索引上查询唯一索引?
对于某些查询,查询优化器可以比使用普通索引更有效地使用唯一索引。仅举一个例子,在包含唯一索引的所有列的 SELECT DISTINCT
查询中,查询优化器可以发出一个跳过对结果进行排序和消除重复项的计划——即使该计划没有明确使用指数!
不过,一般来说,唯一索引与非唯一索引对同一列的性能影响取决于您的查询。
我的建议是尽可能准确地为数据建模。如果你的数据的一个特征是某些列的组合不会在不同的行中重复,并且你打算对这些列进行索引,那么索引应该是唯一索引。
确实,在这种情况下,您应该考虑使用唯一索引来强制这些列的唯一性,即使您不会以其他方式为它们编制索引。添加索引确实会增加一些插入、删除和某些更新的开销,但除非您对这些操作的性能不满意,否则最好忽略它。
在 Mysql 中,除了数据完整性之外 - 与常规索引相比,使用唯一索引是否有任何性能优势? (假设数据是唯一的)
即- 创作时间会更短吗?更新?还是在常规索引上查询唯一索引?
对于某些查询,查询优化器可以比使用普通索引更有效地使用唯一索引。仅举一个例子,在包含唯一索引的所有列的 SELECT DISTINCT
查询中,查询优化器可以发出一个跳过对结果进行排序和消除重复项的计划——即使该计划没有明确使用指数!
不过,一般来说,唯一索引与非唯一索引对同一列的性能影响取决于您的查询。
我的建议是尽可能准确地为数据建模。如果你的数据的一个特征是某些列的组合不会在不同的行中重复,并且你打算对这些列进行索引,那么索引应该是唯一索引。
确实,在这种情况下,您应该考虑使用唯一索引来强制这些列的唯一性,即使您不会以其他方式为它们编制索引。添加索引确实会增加一些插入、删除和某些更新的开销,但除非您对这些操作的性能不满意,否则最好忽略它。