如何减少SQL数据库中的自动增量数?

时间:2015-12-14 02:34:04

标签: mysql database database-design

目前表格结构如下:

user_preference
---------------
id
user_id
pref_id

此表存储所有用户选项,id为auto -inc

问题是:

1)是否有必要为每张桌子保留一张ID?通常的做法是为每个表保留一个系统生成的id

2)每当用户更新他们的权限时,我将为他清除所有相关记录并插入更新一个,auto-inc号将在以后变得非常大。我该如何防止这种情况?

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

您可以定期将自动增量计数器重置为1,以确保在频繁删除记录的过程中ID不会变得任意大(和稀疏)。

在MySQL中:

ALTER TABLE table_name AUTO_INCREMENT = 1

在SQL Server中:

DBCC CHECKIDENT (table_name, RESEED, 0)

这些命令中的每一个都会将自动增量计数器重置为1,或者如果1已经被另一条记录使用,则将最接近1的值重置为。

答案 1 :(得分:0)

需要为每个表都有一个if letters.eql?(letters.upcase) && dash.eql?('-') && numbers.to_i.to_s.eql?(numbers) AUTO_INCREMENT。有时会有一个“自然”键对PK很有效。

不要操纵PRIMARY KEY值。除了唯一性之外,不要依赖任何财产。

你的AUTO_INCREMENT表闻起来像多对多的映射?如果是这样,这是最佳的:

user_preference

有关“为什么”的讨论,请参阅http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table