mysql - 如何重用 auto_increment 值?

标签 mysql database auto-increment

<分区>

Possible Duplicate:
Fragmentation of id's (auto_increment column) in mysql

我的数据库中有这一列。假设它的名字是“threadid”。 它包含给予每个线程以进行区分的唯一 ID。

线程标识 9 8个 7 6个 5个 4个 3个 2个 1

假设我删除了 ID 为 5 和 6 的线程。

线程标识 9 8个 7 4个 3个 2个 1

但是删除后有提交的时候,给那个线程的唯一id是10,不是5,我觉得这样不太整洁。

如何在列中获得尽可能小的值? (在本例中为 5。)

我认为我可以使用 MIN() 获取列的最小值并保持 +1 直到我获得未使用的唯一值,但我认为这太复杂了。

有什么简单的方法可以做到这一点吗?

谢谢。

最佳答案

MySQL 中 INT 的最大数量 4294967295 如果您每分钟创建 1000 个线程,则每天需要 1440000 ( 1000 x 60 x 24 ) 个 ID。所以你会在大约 8.17 年后用完所有 ID。

BIGINT 的最大数量是 18446744073709551615,这足以在 35096 年 内每分钟创建 1000000000(10 亿)个 ID

因此,您可以随心所欲地浪费 ID,不必担心它们。

关于mysql - 如何重用 auto_increment 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9743121/

相关文章:

mysql select 匹配多行时

来自两个表的MYSQL QUERY总和

php - 无法让 mysql_insert_id() 工作

php - MYSQL拉取自增值

mysql - 在 MySQL 中插入具有唯一 ID 冲突的旧数据

java.lang.ClassNotFoundException : com. mysql.jdbc.Driver 错误,即使在导入库之后

mysql - 使用 SQL 查询合并两个数据集

c# - 为什么我必须在对象初始值设定项中将 @ 放在 `Name` 前面?

sql - 如果字段长度大于 n,则自动递增计数器

MySQL-插入一条主键为空的记录,在一台服务器上工作,而不是另一台服务器