如何处理大量数据的自动编号(索引)?

时间:2016-07-20 13:55:46

标签: sql-server

我的数据库(SQL Server 2014)上有一个表,它有一个自动编号列作为我的索引列。

我一天有很多数据插入,我想我怎么能在一年后处理我的数据库,我的意思是自动数字列最后只限于一个数字。

如果我需要更改数据库的架构或设计,我可以在哪里     找到了参考吗?

4 个答案:

答案 0 :(得分:2)

Sql server的estimatedDataRate数据类型上限为int 即使您每天插入2^31-1 (2,147,483,647)行,也需要50年才能达到最大限制。我猜在那个时候,如果你的应用程序活得那么久,sql server 2014会过时,有人会至少重写一次应用程序。 如果您认为不够,可以使用100,000数据类型,其上限为BigInt

另外,请注意,没有任何内容可以阻止您使用负数,如果您这样做,则常规2^63-1 (9,223,372,036,854,775,807)的范围为4,294,967,296。这在任何应用程序生命周期中都很难用完。

来自相关的MSDN page

int

答案 1 :(得分:2)

您不断增加的列可能是INT,其限制为2,147,483,647 ..如果您确定,您的表格可能超出此数量

然后尝试BIGINT,其限制为9,223,372,036,854,775,807并读为 九quintillion二百二十三千万三百七十二万亿三十六

以下是如何将Identity列从INT更改为BIGINT

Replace identity column from int to bigint

答案 2 :(得分:1)

如果您认为int对于主键(最大2,147,483,647)来说太小,请尝试使用bigint(9,223,372,036,854,775,807)。对于大多数表来说,这应该足够了。

答案 3 :(得分:1)

您所指的是主键,可能是聚簇索引。使用Identity是一种标准做法,因为这会将新记录“放在最后”。您将需要其他索引用于其他查询。

至于限制,酒吧很高。

Data type   Range   Storage
bigint  -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)    8 Bytes
int -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)    4 Byte