删除后重置数据库记录 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 种可能的解决方案,各有优缺点;
- 将 Pk 更改为
BIGINT
并希望它不会达到最大值
虽然最大值很大,但以后还是有触及的风险,我不想冒那个风险。
- 删除任何记录后,将
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
你可以很确定,当达到极限时,你的生命就结束了,解决问题的任务就交给别人了。
我目前正在使用一个包含大约 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 种可能的解决方案,各有优缺点;
- 将 Pk 更改为
BIGINT
并希望它不会达到最大值
虽然最大值很大,但以后还是有触及的风险,我不想冒那个风险。
- 删除任何记录后,将
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
你可以很确定,当达到极限时,你的生命就结束了,解决问题的任务就交给别人了。