sql-server - 删除记录时,索引种子仍然很高

标签 sql-server sql-server-2008

好吧,我在数据库主题方面的经验有点少,但考虑一下您的表中有一个名为 id 的字段的情况,并且它是可索引/增量播种的。

所以也许您有第 1-60 行,所以 id 在 1-60 之间,增量为“61”。

如果删除第 30-50 行,增量不应该回到“31”吗?填上那30-50个id,然后又回到61?

我的问题:::为什么 MSSQL/SQL Server 不这样做?丢失的 30-50 之间未使用的 ID 将永远不会再次使用。

此外,如果您在 id 500-600 之间手动插入一些行怎么办?当增量达到“500”时,会不会出现“duplicate key”错误? ???

所以如果你有某种表,每个用户都在不断地改变——删除、插入、删除、插入,你最好希望 id 是 bigint,因为它会很快进入1,000,000+ 区域,如果您有足够的用户。

最佳答案

如果该字段用作唯一 ID,您不应该希望它重复使用一个值。删除后,不应重复使用值。

如果该字段是自动生成的,您不应该在其中手动设置值,除非在特殊情况下(如复制)。

是的;您需要确保选择足够大的数据类型。不要搞类似千年虫的噱头并不必要地限制您的应用。

关于sql-server - 删除记录时,索引种子仍然很高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8672291/

相关文章:

sql-server - sql azure 初学者 - 简单的插入语句出现错误

sql - 比较两个表之间的字符串数据

sql - 使用 ISNULL 包装求和和计算

sql - 如何从 SQL Server 中的列中删除第一个字符

sql-server-2008 - 连接时 SQL Server 错误 223

sql - 非聚集索引在不同列类型上的性能

sql-server - 如何使用 Azure SQL 数据库防止/处理 ErrBadConn

c# - 在 asp.net 中将字符串转换为 SQL Server uniqueidentifier

c# - 带分钟的 DATEDIFF 不返回预期值

sql-server - 批量插入失败,因为动态 sql