只需要重新设置一个表的auto_increment值,而不用重build整个索引。 我有一个超过20亿行的桌子,偶然有一个身份证被插入到了42亿。 根据以往的经验,我知道试图将auto_increment值设置回原来的值会强制mysql重build整个索引,这可能需要24小时才能完成。 说实话,我不能相信这只是默认情况下的“如何”工作。 绝对不需要重build整个表索引,只是因为你想改变这个值。
必须有一个方法。 但我找不到任何地方。 想法请!
(重build索引,我知道myisamchk可以做到比mysql进程本身快100倍,但是我不能告诉mysql使用myisamchk而不是自己来改变自动增量ID后重build索引。 !)
基于这篇文章 ,看起来您可以将意外ID重置为适当的值,或者删除该行,然后重新启动服务器,因为innodb表的自动增量值被保存在内存中。 我以前没有尝试过,但它可能工作。