gpt4 book ai didi

MySQL 自动递增编号问题

转载 作者:行者123 更新时间:2023-11-29 14:32:27 25 4
gpt4 key购买 nike

我的数据库中有一个表,其中包含大约 500 万条记录,我注意到每条记录的 ID 在每次插入时都不会增加 1。

例如,我有以下架构设置:

我的表Activity_id INT(11) PRIMARY (AUTO_INCRMENT),创建于 DATETIME

如果我查看表格并按日期时间排序,则数字不是连续的。实际上,MySQL 似乎正在查找何时有删除,然后在其中添加新记录。

Edit    Delete  5000089     2012-03-17 04:31:46
Edit Delete 5000087 2012-03-17 04:31:44
Edit Delete 5000086 2012-03-17 04:31:43
Edit Delete 5000085 2012-03-17 04:31:43
Edit Delete 5000084 2012-03-17 04:31:31
**Edit Delete 5000088 2012-03-17 04:31:30**
**Edit Delete 5000076 2012-03-17 04:31:30**
Edit Delete 5000082 2012-03-17 04:31:29

正如您所看到的,在格林威治标准时间 4:31:30,我们有 2 个插入,其中应该有 83 和 84,但它的增量很奇怪。应用程序的数据库插入未指定 ID,activity_id 字段设置为 Auto_increment。

任何帮助都将极大地了解为什么会发生这种情况。

有人见过这样的事情吗?

最佳答案

auto-increment documentation有这一段:

In this case (when the AUTO_INCREMENT column is part of a multiple-column index), AUTO_INCREMENT values are reused if you delete the row with the biggest AUTO_INCREMENT value in any group. This happens even for MyISAM tables, for which AUTO_INCREMENT values normally are not reused.

这似乎暗示索引值在 InnoDB 表中重用,在某些情况下在 MyISAM 表中重用。因此,如果您删除一行,MySQL 可能会使用旧行的 ID 创建一个新行。

关于MySQL 自动递增编号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9747292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com