【发布时间】:2017-06-09 08:29:05
【问题描述】:
我目前正在使用一个包含大约 10.000 多条记录并且还在不断增长的数据库。这是一个带有维护日志的数据库,我在其中执行一些分析以提取有关维护的一些数据。分析结果存储在同一个数据库的不同表中。
维护表:
------------------------------------------
|id remainingdata
|1 testing
|2 alsotesting
|3 testing1
分析结果表:
------------------------------------------
|id maintenanceid remainingdata
|1 1 result1
|2 1 result2
|3 2 result3
|4 3 result4
|5 3 result5
执行分析后可以更新日志记录,因此可以重新进行分析。当重新分析维护记录时,所有分析记录(包含维护记录的外键)都将从表中删除并重新输入。因此,假设我重新分析了所有 3 条维护记录。我的结果表现在看起来像这样;
------------------------------------------
|id maintenanceid remainingdata
|6 1 result1
|7 1 result2
|8 2 result3
|9 3 result4
|10 3 result5
我面临的问题是,当每周可能删除并输入 10.000 多条记录时,AUTO_INCREMENT 数字很快就会变得非常高。因为我想在未来证明我的数据库,所以我需要找到解决这个问题的方法。
注意:结果表中的 id 仅用于保留重复项,其他表中没有对它们的引用。
我自己已经想到了两种可能的解决方案,它们都有优点和缺点;
- 将 Pk 更改为
BIGINT并希望它不会达到最大值
虽然最大值非常大,但将来仍有可能达到它,我真的不想冒这种风险。
- 删除任何记录后,将
AUTO_INCREMENT重置为TOP(id)
这对我来说似乎是最好的解决方案,但如果有反对它的论据我很感兴趣,这会将 id 值重置为当前表中的最大 id,如果重新分析所有记录,它将返回1.
我想知道关于我的解决方案的意见是什么,或者是否有人对此问题有更好的解决方案。 提前致谢
【问题讨论】:
-
您不能使用 TRUNCATE TABLE 选项重置 AUTO_INCREMENT 列吗?
-
@Sujith 并非总是删除所有记录,有时只有 1 或 2 条记录
标签: mysql database primary-key uniqueidentifier