如何处理大型数据库表主键

时间:2013-03-20 11:12:53

标签: sql sql-server-2012

我在数据库中有几个表,其中自动增量ID字段设置为整数值。记录将每秒添加到这些表中。当我用完Integer值时会发生什么?这会导致问题吗?关于如何处理快速增长的表的自动增量值的任何建议?

2 个答案:

答案 0 :(得分:2)

类型为INT,从1开始,您可以获得超过20亿的行 - 这对于绝大多数情况来说应该足够了。使用BIGINT,你可以得到大约 922千兆(922,15个零 - 922'000亿) - 足够你?

如果您从1开始使用INT IDENTITY,并且每秒插入一行,则在达到20亿限制之前需要 66。5年 ....

如果您从1开始使用BIGINT IDENTITY,并且每秒插入一千行,那么在达到922千万亿次限制之前,您需要一个令人难以置信的 2.92亿年。 ..

MSDN Books Online

中详细了解它(包括所有选项)

答案 1 :(得分:1)

那是很多行。来自the doc

  

整数(整数)数据从-2 ^ 31(-2,147,483,648)到2 ^ 31 -   1(2,147,483,647)。存储大小为4个字节。 SQL的代号为int的同义词   是整数。

您是否考虑过using GUIDs as primary keys