18

私は SQL Server 2008 の初心者です。テーブルに のような列がありますStudentIDStudentIDテーブルの pk になります。これは整数のみであり、膨大な数になります。

私の質問は、SQL Server 2008 の StudentID 列のどのタイプが最適ですか?

bigint? numeric(18,0)? または他の人?

どうもありがとう。

4

3 に答える 3

39

タイプINT(またはSMALLINT, TINYINT, BIGINT) の列を次のIDENTITY属性で定義します。

CREATE TABLE dbo.YourTable( ID INT IDENTITY(1,1) ......

このセットアップでは、テーブルに行が挿入されると、SQL Server はテーブルの連続した ID を自動的に生成します。

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

1 から始まるを使用し、INT IDENTITY1 秒ごとに行を挿入する場合、20 億の制限に達するまでに66.5必要です (したがって、私の意見では、これは大部分のケースで十分です!)

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

INTは 4 バイトのストレージをBIGINT使用し、8 バイトを使用します。特に、多数の行と多数の非クラスター化インデックスを扱う場合は、これをできるだけ小さく保ちたいと考えていINTます。INT十分ではないという指摘...)

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

于 2012-06-27T09:19:12.980 に答える
1

はい、intまたはintのバリ​​エーションは良い選択ですが、私が考えることができる1つの欠点があります。行が削除されると、ID フィールドに (1,3,4,5) のような番号が表示されません。Guid は ID フィールドの 2 番目の選択肢になる可能性があります

于 2019-10-31T00:29:02.053 に答える