Sql server SQL Server 2008中ID列的最佳类型
我是SQL Server 2008的初学者。表中有一个列,如Sql server SQL Server 2008中ID列的最佳类型,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我是SQL Server 2008的初学者。表中有一个列,如StudentID。 StudentID将是表的主键,它只能是整数,并且将是一个巨大的数字 我的问题是SQLServer2008中StudentID列的哪种类型最好 bigint? 数字(18,0)?还是其他 非常感谢。您可以使用标识属性定义类型为INT(或SMALLINT、TINYINT、BIGINT)的列: CREATE TABLE dbo.YourTable( ID INT IDENTITY(1,1) ...... 通过此设置,
StudentID
。
StudentID
将是表的主键,它只能是整数,并且将是一个巨大的数字
我的问题是SQLServer2008中StudentID列的哪种类型最好
bigint
?
数字(18,0)
?还是其他
非常感谢。您可以使用
标识属性定义类型为INT
(或SMALLINT、TINYINT、BIGINT
)的列:
CREATE TABLE dbo.YourTable( ID INT IDENTITY(1,1) ......
通过此设置,SQL Server将在表中插入行时自动为表生成连续的ID
使用类型INT
,从1开始,您可以得到超过20亿行的,这对于绝大多数情况来说应该足够了。使用BIGINT
,您大约可以得到922万亿(922,15个零-922万亿)-足够您使用吗
如果使用从1开始的INT标识
,并且每秒插入一行,则需要66.5年才能达到20亿的上限。。。(所以在我看来,对于绝大多数情况来说,这已经足够了!)
如果从1开始使用BIGINT标识
,并且每秒插入1000行,那么在达到922万亿次极限之前,需要一个令人难以置信的2.92亿年
INT
使用4个字节的存储,而BIGINT
使用8个字节。特别是当您处理大量行和大量非聚集索引时,您希望使其尽可能小-这也是我通常选择INT
作为“ID”类型的另一个原因(除非我有非常强烈的指示,INT
不够用…)
请在中阅读有关它的详细信息(以及所有选项)。Int
是SQL Server表中Id列的最佳类型
如果表最终有太多记录,我们可以更改为BigInt
我们还可以创建Id作为表的标识和/或PK
CREATE TABLE [dbo].[TableName](
[TableNameId] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
标识和主键的示例
CREATE TABLE [dbo].[TableName3](
[TableName3Id] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_TableName3] PRIMARY KEY CLUSTERED
(
[TableName3Id] ASC
)
)
希望这对我有帮助。你的问题对我有帮助 是的,int或int的任何变体都是一个不错的选择,但我可以想到它有一个缺点。删除行时,ID字段显示缺少的数字,如(1,3,4,5)。
Guid可能是ID字段的第二选择您好,先生,感谢您在更广泛的级别上改变了开发CMS级别应用程序的角度。如果您将数据类型的标识种子设置为最低负数,则可以将列中存储的值总数增加一倍。