sql-server – SQL Server 2008中ID列的最佳类型

我是sql Server 2008的初学者.表中有一个colunm,如StudentID.
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中阅读更多(有所有选项).

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...