关于mysql中自增加的ID问题

首先明确答复你:超过之后会从0开始编码。下面以表示范围更小的单字节类型为例子说明,如果是有符号数据类型,首先从0开始编码,到127的时候就是最大,下一个数将是-128,随后-127、-126,直到0以后,又会从1开始编码。如果是无符号类型,那么会从0开始到256结束,然后又从0开始编号。上面可能有点...
关于mysql中自增加的ID问题
首先明确答复你:超过之后会从0开始编码。下面以表示范围更小的单字节类型为例子说明,如果是有符号数据类型,首先从0开始编码,到127的时候就是最大,下一个数将是-128,随后-127、-126,直到0以后,又会从1开始编码。如果是无符号类型,那么会从0开始到256结束,然后又从0开始编号。

上面可能有点糊涂,但是仔细看的话,我相信你能明白。

其次我告诉你:你应该选择足够大的数据类型,为了防止数据重复,你可以让你的程序在未来的十年都不会因为这样的问题成为缺陷,下面是MYSQL各数据类型表示的范围:

类型
字节
带符号的范围
无符号的范围

TINYINT
1
-128~127
0~ 255

SMALLINT
2
-32768~ 32767
0~ 65535

MEDIUMINT
3
-8388608~8388607
0~ 16777215

INT
4
-2147483648~2147483647
0~ 4294967295

BIGINT
8
-9223372036854775808~ 9223372036854775807
0~ 18446744073709551615

不直到你的业务有多少,BIGINT类型可能10年不会存满吧。

最后说一句,不要试图去想办法让ID值重复使用,尽管有许多办法可以实现,但那几乎是得不偿失的。2009-01-20
int(11)也就是1000亿,估计你够用了2009-01-20
不行的说2019-10-19
mengvlog 阅读 29 次 更新于 2025-09-09 12:45:22 我来答关注问题0
  • 首先明确答复你:超过之后会从0开始编码。下面以表示范围更小的单字节类型为例子说明,如果是有符号数据类型,首先从0开始编码,到127的时候就是最大,下一个数将是-128,随后-127、-126,直到0以后,又会从1开始编码。如果是无符号类型,那么会从0开始到256结束,然后又从0开始编号。上面可能有点糊...

  •  文暄生活科普 面试官:MYSQL自增id超过int最大值怎么办?

    在MySQL中,如果自增ID(AUTO_INCREMENT)设置为int类型,其最大值为2147483647(对于有符号int)或4294967295(对于无符号int)。当表中的记录数增加到接近或超过这个值时,再尝试插入新记录将会失败,因为无法为新的记录分配一个唯一的自增ID。二、解决方案 修改数据类型为BIGINT 操作:将自增ID的数据...

  •  文暄生活科普 面试官问:MySQL自增ID用完了,怎么办?

    方案描述:采用UUID、雪花算法、Redis生成ID等全局唯一ID生成策略,以避免自增ID的耗尽问题。UUID:生成的ID全局唯一,但长度较长,可能影响索引性能和存储效率。雪花算法:由Twitter提出的一种分布式ID生成算法,通过组合时间戳、机器ID等信息生成64位的长整型ID,具有高性能和唯一性。Redis生成ID:利用Redis...

  •  翡希信息咨询 「MySQL」 - 自增主键id

    在MySQL中,自增主键是一种常见的用于唯一标识表中每一行记录的方式。它通常通过AUTO_INCREMENT属性来实现,为每个新插入的行自动分配一个唯一的、递增的整数。然而,自增主键id的使用也伴随着一些限制和潜在的问题,特别是在达到其上限时。一、AUTO_INCREMENT的使用与限制 定义与初始值 在创建表时,可以...

  • MySQL中实现自增ID 一般是在建表的时候定义的,可以通过以下代码来实现:CREATE TABLE people(id INT NOT NULL AUTO_INCREMENT,name VARCHAR(50) NOT NULL,age INT NOT NULL,PRIMARY KEY (id));上面的代码中,在建表people中有一个id字段,他是主键,并且加了NOT NULL和AUTO_INCREMENT两个约束,...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部