LIU*_*LIU 15 sql-server sql-server-2008
我是SQL Server 2008的初学者.表格中有一个colunm StudentID.
StudentID将是表的pk,它只能是整数,它将是一个巨大的数字.
我的问题是SQL Server 2008中的StudentID列最适合哪种类型?
bigint?
numeric(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联机丛书中了解有关它的更多信息(包括所有选项).
| 归档时间: |
|
| 查看次数: |
29366 次 |
| 最近记录: |