我是sql Server 2008的初学者.表中有一个colunm,如StudentID.
StudentID将是表的pk,它只能是整数,它将是一个巨大的数字.
StudentID将是表的pk,它只能是整数,它将是一个巨大的数字.
我的问题是sql Server 2008中的列StudentID的类型是最好的?
BIGINT?
数字(18,0)?还是别人?
非常感谢.
解决方法
您可以使用IDENTITY属性定义一个类型为INT(或SMALLINT,TINYINT,BIGINT)的列:
CREATE TABLE dbo.YourTable( ID INT IDENTITY(1,1) ......
通过此设置,当行插入到表中时,sql Server将自动生成表的连续ID.
使用INT型,从1开始,您可以获得超过20亿个可能的行 – 这在绝大多数情况下应该是足够的.使用BIGINT,您将获得大约922万亿(922,15个零 – 922,000亿) – 足够你吗?
如果您使用从1开始的INT IDENTITY,并且每秒插入一行,则需要66.5年才能达到20亿的限制…(所以在我看来,这对绝大多数情况来说是足够的! )
如果您使用从1开始的BIGINT IDENTITY,并且每秒插入一千行,则在您达到922千兆限制之前,您需要一个2.9亿年的想法.
INT使用4个字节的存储空间,而BIGINT使用8个字节.特别是如果你处理大量的行和一些非聚集的索引,你希望保持尽可能的小 – 另一个原因,我通常选择INT作为我的“ID”类型(除非我有一个非常强烈的指示,INT将不够…)
在MSDN Books Online中阅读更多(有所有选项).