必须有一种方法可以在不重建整个索引的情况下重置表上的 auto_increment 值。我有一个包含超过 20 亿行的表,其中意外插入了将近 42 亿行的 ID。根据过去的经验,我知道尝试将 auto_increment 值设置回应有的值将迫使 mysql 重建整个索引,这在这种大小的表上可能需要 24 小时。老实说,我不敢相信这只是默认情况下的“工作方式”。完全不需要重建整个表索引,因为您想更改此值。
必须有办法。但我在任何地方都找不到。想法请!
(重建索引,我知道 myisamchk 可以比 mysql 进程本身快 100 倍。但我不能告诉 mysql 在更改自动增量 ID 后使用 myisamchk 而不是自己来重建索引。必须有一种方法!!!)
根据这篇文章,看起来您可以将意外 ID 重置为适当的值,或者删除该行然后重新启动服务器,因为 innodb 表的自动增量值保存在内存中。我以前没有尝试过,但它可能会起作用。