我在SQL服务器中有一个大型事务表,每天用于存储大约400-500条记录。我应该在PK列中使用什么数据类型? PK列存储数值,整数似乎合适,但我担心它会超过整数的最大值,因为我每天都有这么多记录。
我目前正在为我的PK列使用整数数据类型。
答案 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亿年。 ..
答案 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)
如果这不是我愚蠢那么那么多天: - )