删除后重置数据库记录 ID

Resetting database record Id after delete

我目前正在使用一个包含大约 10.000 多条记录并且还在不断增长的数据库。这是一个带有维护日志的数据库,我对其进行了一些分析以提取一些有关维护的数据。分析结果以不同的table.

存储在同一个数据库中

维护table:

------------------------------------------
|id      remainingdata
|1       testing
|2       alsotesting
|3       testing1

分析结果table:

------------------------------------------
|id      maintenanceid      remainingdata
|1       1                  result1
|2       1                  result2
|3       2                  result3
|4       3                  result4
|5       3                  result5

日志记录可以在执行分析后更新,因此可以重新进行分析。当重新分析维护记录时,分析的所有记录(包含维护记录的外键)都从 table 中删除并重新输入。所以假设我重新分析了所有 3 个维护记录。我的结果 table 现在看起来像这样;

------------------------------------------
|id      maintenanceid      remainingdata
|6       1                  result1
|7       1                  result2
|8       2                  result3
|9       3                  result4
|10      3                  result5

我面临的问题是,当每周删除和输入 10.000 多条记录时,AUTO_INCREMENT 数字会很快变得非常高。因为我想在未来证明我的数据库,所以我需要找到解决这个问题的方法。

注意:结果 table 中的 ID 仅用于保留重复项,在其他 table 中没有任何对它们的引用。

我自己想到了 2 种可能的解决方案,各有优缺点;

  1. 将 Pk 更改为 BIGINT 并希望它不会达到最大值

虽然最大值很大,但以后还是有触及的风险,我不想冒那个风险。

  1. 删除任何记录后,将 AUTO_INCREMENT 重置为 TOP(id)

这对我来说似乎是最好的解决方案,但如果有反对意见我很感兴趣,如果重新分析所有记录,这会将 id 值重置为 table 当前的最大 id , 它会回到 1.

我想知道对我的解决方案有何看法,或者是否有人对这个问题有更好的解决方案。 提前致谢

寻求 BIGINT 解决方案。真的。

无符号 BIGINT 可以 hold numbers 大到 9223372036854775807.

以每周 10k 的预期速度,这意味着您的应用程序是 922337203685477 周或 17737253917028 年或连续 221715673962 人生命的未来证明,每人的预期年龄约为 80 岁。这大约是世界人口的三倍。

there is still a risk of hitting it in the future and I don't really want to have that risk

你可以很确定,当达到极限时,你的生命就结束了,解决问题的任务就交给别人了。