私は SQL Server 2008 の初心者です。テーブルに のような列がありますStudentID
。
StudentID
テーブルの pk になります。これは整数のみであり、膨大な数になります。
私の質問は、SQL Server 2008 の StudentID 列のどのタイプが最適ですか?
bigint
?
numeric(18,0)
? または他の人?
どうもありがとう。
私は SQL Server 2008 の初心者です。テーブルに のような列がありますStudentID
。
StudentID
テーブルの pk になります。これは整数のみであり、膨大な数になります。
私の質問は、SQL Server 2008 の StudentID 列のどのタイプが最適ですか?
bigint
?
numeric(18,0)
? または他の人?
どうもありがとう。
タイプINT
(またはSMALLINT, TINYINT, BIGINT
) の列を次のIDENTITY
属性で定義します。
CREATE TABLE dbo.YourTable( ID INT IDENTITY(1,1) ......
このセットアップでは、テーブルに行が挿入されると、SQL Server はテーブルの連続した ID を自動的に生成します。
INT
1 から始まるtype を使用すると、 20 億行を超える可能性のある行を取得できます。これは、ほとんどの場合、十分すぎるはずです。ではBIGINT
、およそ922 千兆(15 個のゼロを含む 922 - 922,000 億) が得られます。これで十分ですか??
1 から始まるを使用し、INT IDENTITY
1 秒ごとに行を挿入する場合、20 億の制限に達するまでに66.5年必要です (したがって、私の意見では、これは大部分のケースで十分です!)
1 から始まるa を使用し、BIGINT IDENTITY
毎秒 1,000 行を挿入すると、922,000 兆の制限に達するまでに、気が遠くなるような 2億 9,200 万年が必要になります。
INT
は 4 バイトのストレージをBIGINT
使用し、8 バイトを使用します。特に、多数の行と多数の非クラスター化インデックスを扱う場合は、これをできるだけ小さく保ちたいと考えていINT
ます。INT
十分ではないという指摘...)
詳細については、MSDN Books Onlineを参照してください (すべてのオプションを含む) 。
はい、intまたはintのバリエーションは良い選択ですが、私が考えることができる1つの欠点があります。行が削除されると、ID フィールドに (1,3,4,5) のような番号が表示されません。Guid は ID フィールドの 2 番目の選択肢になる可能性があります