一、表结构
二、MySQL提供了批量申请自增id的策略
- 语句执行过程中,第一次申请自增id,会分配1个(2的0次方)
- 1个用完以后,这个语句第二次申请自增id,会分配2个(2的1次方)
- 2个用完以后,还是这个语句,第三次申请自增id,会分配4个(2的2次方)
三、举例
例子一:
INSERT INTO user (name, age) SELECT name, age from user01 limit 4;
第一次申请自增id会分配1个,1 < 4
第二次申请自增id会分配2个,1+2 < 4
第三次申请自增id会分配4个,1+2+4 > 4,终止
此时1 + 2 + 4 = 7 > 4,申请自增id的操作就会停止。
因为已经申请了7个id了,所以当我们执行第二条SQL语句时,插入数据的id就会从8开始,此时AUTO_INCREMENT的值也会是8
例子二:
INSERT INTO user (name, age) SELECT name, age from user01 limit 8;
第一次申请自增id会分配1个,1 < 8
第二次申请自增id会分配2个,1+2 < 8
第三次申请自增id会分配4个,1+2+4 < 8
第四次申请自增id会分配4个,1+2+4+8 > 8
此时1 + 2 + 4 +8= 15 > 8,申请自增id的操作就会停止。
因为已经申请了15个id了,所以当我们执行第二条SQL语句时,插入数据的id就会从16开始,此时AUTO_INCREMENT的值也会是16
来源地址:https://blog.csdn.net/weixin_41712931/article/details/129419974