温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

主键为何要用自增

发布时间:2026-09-03 02:17:29 来源:亿速云 阅读:85 作者:小樊 栏目:数据库

在数据库设计中,“主键使用自增(Auto Increment)”是一种非常常见、也被广泛推荐的做法,主要原因在于性能、稳定性、简洁性和业务解耦。下面从几个核心角度说明:


1. 写入性能更好(尤其 InnoDB)

MySQL InnoDB 为例:

  • 主键默认就是聚簇索引(Clustered Index)
  • 数据行按主键顺序物理存储

自增主键

  • 新数据永远追加在“最后”
  • 插入几乎不触发页分裂
  • 写入性能高

非自增主键(如 UUID)

  • 插入位置随机
  • 频繁页分裂、数据迁移
  • 写入性能明显下降

2. 主键与业务解耦

自增 ID 是无业务含义的代理主键

用户表
id (自增) | username | phone

好处:

  • 用户名、手机号可改
  • 不会动主键
  • 外键关系稳定

如果用业务字段当主键:

  • 手机号换了 → 主键变 → 关联数据全动
  • 风险极高

3. 索引更小、查询更快

  • 自增 ID 通常是 INT / BIGINT
  • UUID 是 36 字符或 16 字节

结果:

  • 索引体积更小
  • 内存命中率更高
  • 查询更快

4. 避免并发冲突

自增由数据库统一生成:

  • 不需要应用层协商
  • 不会重复
  • 分布式库中也可用(如雪花算法替代)

5. 方便分页与排序

ORDER BY id
  • 自增 ID 天然有序
  • 分页稳定(不会重复或漏数据)

什么时候用自增?

❌ 不适合的场景:

  • 分布式强一致 ID(用雪花 / ULID)
  • 需要对外隐藏数量(防爬)
  • 业务天然唯一键(如订单号)

总结一句话

自增主键 = 高性能 + 低复杂度 + 易维护

如果你愿意,我也可以对比:

  • 自增 vs UUID
  • 自增 vs 雪花算法
  • 单库 vs 分库分表下的主键方案
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI