SQL Server 2008中ID列的最佳类型

LIU*_*LIU 15 sql-server sql-server-2008

我是SQL Server 2008的初学者.表格中有一个colunm StudentID. StudentID将是表的pk,它只能是整数,它将是一个巨大的数字.

我的问题是SQL Server 2008中的StudentID列最适合哪种类型?

bigintnumeric(18,0)?或其他人?

非常感谢.

mar*_*c_s 32

您可以使用以下属性定义类型INT(或SMALLINT, TINYINT, BIGINT)的列IDENTITY:

CREATE TABLE dbo.YourTable( ID INT IDENTITY(1,1) ......
Run Code Online (Sandbox Code Playgroud)

使用此设置,当将行插入表中时,SQL Server将自动为表生成连续的ID.

对于INT从1开始的类型,您可以获得超过20亿个可能的行 - 这对于绝大多数情况来说应该足够了.有了BIGINT,你得到大约922千万亿(922有15个零 - 922'000亿) - 足够你?

如果你使用INT IDENTITY从1开始,并且你每秒插入一行,你需要66.5 才能达到20亿的限制......(所以在我看来,这对绝大多数情况来说已经足够了!)

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

INT使用4个字节的存储空间,同时BIGINT使用8个字节.特别是如果你处理大量的行和一些非聚集索引,你想要保持这个尽可能小 - 这我通常选择INT我的"ID"类型的另一个原因(除非我有一个非常强大的指示INT不够......)

MSDN联机丛书中了解有关它的更多信息(包括所有选项).