1

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

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

4

2 回答 2

3

使用 type INT,从 1 开始,您可以获得超过 20 亿行可能的行——这对于绝大多数情况来说应该绰绰有余。有了BIGINT,你得到大约922 万亿(922 有 15 个零 - 922'0000 亿) - 对你来说足够了吗?

如果您使用INT IDENTITY从 1 开始的行,并且每秒插入一行,则需要 66.5才能达到 20 亿的限制....因此,每天 400-500 行 - 您可能需要几个世纪才能用完值...每天取 1'000 行 - 5883 年应该没问题- 够好吗?

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

在MSDN 联机丛书中阅读有关它的更多信息(包括所有选项)。

于 2012-08-24T12:32:06.887 回答
1

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

因此,如果您将其除以 500 以大致获得记录的天数,您将获得 18446744073709600 天的 500 条新记录。

再除以 365,得到 50539024859478.2 年,每天 500 条记录

所以 (((2^63-1) / 500) / 365)

如果那不是我很愚蠢,那已经很多天了:-)

于 2012-08-24T12:13:44.537 回答