MySQL自增列优缺点

生产项目中很久没有使用过自增列,本文针对MySQL的InnoDB引擎对自增列进行分析

如何使用自增列

create table tab (id int auto_increment)

优点

  • 自增列天然有序,作为主键的时候数据分布可以预估
  • InnoDB引擎默认会将第一个不包含Null的唯一索引作为主键索引,如果没有符合条件的索引,会创建一个隐含的Rowid,该索引属于聚集索引。
  • 聚集索引在子叶数据放满的时候回进行页分裂,自增列保证了数据添加只会操作最后的页,数据放满后开辟新的页,不会对之前的数据进行分裂,移动,减少了空间碎片

    缺点

  • 自增列只能针对单个数据库,无法进行数据库的拆分(通过自增量进行区分,但是不灵活,也无法一致扩展)
  • 可能会出现不连续的问题(ID不做任何业务,只关心是否相等)
  • 自增列无法保证唯一(通过唯一约束避免)