我的数据库(SQL Server 2014)上有一个表,它有一个自动编号列作为我的索引列。
我一天有很多数据插入,我想我怎么能在一年后处理我的数据库,我的意思是自动数字列最后只限于一个数字。
如果我需要更改数据库的架构或设计,我可以在哪里 找到了参考吗?
答案 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
答案 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