在SQL Server表中选择适当的DataType

时间:2012-08-24 12:05:52

标签: sql-server sqldatatypes

我在SQL服务器中有一个大型事务表,每天用于存储大约400-500条记录。我应该在PK列中使用什么数据类型? PK列存储数值,整数似乎合适,但我担心它会超过整数的最大值,因为我每天都有这么多记录。

我目前正在为我的PK列使用整数数据类型。

2 个答案:

答案 0 :(得分:3)

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

如果您从1开始使用INT IDENTITY,并且每秒插入一行,则在达到20亿限制之前需要66.5 ....所以使用400-每天500行 - 在用完可能的值之前需要几个世纪 ...每天需要1000行 - 你应该没那么好<5883年 - 好足够?

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

MSDN Books Online

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

答案 1 :(得分:1)

我可能在这里错了,因为数学从来都不是我的强项,但如果你使用bigint,它的最大尺寸为2 ^ 63-1(9,223,372,036,854,775,807)

所以,如果你把它除以500来得到大约天数的记录,你就可以获得18446744073709600天的500条新记录。

再次除以365,每天为您提供50539024859478.22年的500条记录

so(((2 ^ 63-1)/ 500)/ 365)

如果这不是我愚蠢那么那么多天: - )