InnoDB主键特点
1.索引定义时,若不显示包含主键,会隐式加入主键值。
2.索引定义时,若显示包含主键,会加入主键值。
3.在5.6.8以后,优化器已能自动识别索引末尾的主键值(Index Extensions),在这之前则需要显式加上主键列才可以被识别
案例:某InnoDB表,没有自增列主键,使用一段时间后,产生碎片,重整表空间后,从13G变成了9G。
主键选择建议:
1.对业务透明,无意义,免受业务变化影响。
2.主键要很少修改和删除。
3.主键最好是自增的。
4.不要具有动态属性,例如最后修改时间戳。
参考
[MySQL FAQ]系列 — 为什么InnoDB表要建议用自增列做主键
[MySQL优化案例]系列 -- InnoDB主键设计
时间: 2024-10-19 07:18:30