1

SQL サーバーに、毎日約 400 ~ 500 のレコードを格納するために使用される大きなトランザクション テーブルがあります。PK 列で使用するデータ型は何ですか? PK 列には数値が格納されます。これには整数が適しているように見えますが、毎日多くのレコードがあるため、整数の最大値を超えてしまうのではないかと心配しています。

現在、PK 列に整数データ型を使用しています。

4

2 に答える 2

3

INT1 から始まるtype を使用すると、 20 億行を超える可能性のある行を取得できます。これは、ほとんどの場合、十分すぎるはずです。ではBIGINT、およそ922 千兆(15 個のゼロを含む 922 - 922,000 億) が得られます。これで十分ですか??

1 から始まるを使用し、INT IDENTITY毎秒行を挿入すると、20 億の制限に達するまでに 66.5かかります....したがって、1 日あたり 400 ~ 500 行の場合、可能な数を使い果たすまでに何世紀もかかります。値... 1日あたり1'000行を取得します- 5883年間は問題ないはずです-十分ですか?

1 から始まるa を使用し、BIGINT IDENTITY毎秒 1,000 行を挿入すると、922,000 兆の制限に達するまでに、気が遠くなるような 2億 9,200 万年が必要になります ....

詳細については、MSDN Books Onlineを参照してください (すべてのオプションを含む) 。

于 2012-08-24T12:32:06.887 に答える
1

数学は私の得意分野ではなかったので、ここで間違っているかもしれませんが、bigint を使用すると、最大サイズは 2^63-1 (9,223,372,036,854,775,807) になります。

したがって、たとえば 500 で割ると、おおよその日数分のレコードが得られ、18446744073709600 日分の 500 の新しいレコードが得られます。

もう一度 365 で割ると、50539024859478.2 年分の 1 日 500 レコードが得られます

そう (((2^63-1) / 500) / 365)

それが私が愚かではない場合、それは多くの日です:-)

于 2012-08-24T12:13:44.537 に答える