mysql自增主键详解

什么是自增主键?

当设置了自增主键时,主键的生成可以完全依赖数据库,无需人为干预,在新增数据的时候,我们不设置主键字段的值,数据库就会为我们自动生成一个主键值。

为什么要有自增主键?

1、避免页分裂
因为自增主键可以让主键索引保持递增顺序插入,因此避免了页分裂,索引会更加紧凑。
而如果是用业务逻辑的字段做主键,则往往不容易保证有序递增插入,就会造成页分裂,导致写数据成本相对较高。

为何递增插入就可避免页分裂?
因为递增插入的记录之间没有空隙,记录自增主键索引的一个页面满了,就申请另外一个页面,接着从左边开始写数据。
所以不会存在以下情况:当数据页已经满了,此时来了一个新记录,需要插入到数据页中间有缝隙的两个数据之间,造成页分裂

2、更省内存
除了考虑性能外,我们还可以从存储空间的角度来看。
假设你的表中确实有一个唯一字段,比如字符串类型的身份证号,那应该用身份证号做主键,还是用自增字段做主键呢?

由于每个二级索引都包含主键值,所以主键长度越小,普通索引的叶子节点就越小,普通索引占用的空间也就越小,数据页能存的索引就越多。
自增主键比身份证号占用空间小。二级索引占用空间也会相应小一些。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值