我有一个带有自动递增主键的表。该表旨在存储数百万条记录,我现在不需要删除任何内容。问题是,当插入新行时,由于某些错误,自动增量键在自动增量ID中保留了一些间隙。例如,在5之后,下一个ID为8,而间隙为6和7 。结果是当我计算行数时,结果为28000,但最大id为58000。我没有删除任何内容。以及如何解决此问题。
PS我在插入记录时使用插入忽略,以便当我尝试在唯一列中插入重复项时不会出现错误。
这是设计使然,将永远发生。
为什么?
让我们以两个正在执行INSERT的重叠事务为例
然后
如果保证了连续的值,则每笔交易都必须接连发生。伸缩性不是很好。
另请参阅“插入记录是否始终接收连续的标识值”(SQL Server,但适用相同的原理)