SQL Server 2008 中 ID 列的最佳类型



我是SQL Server 2008的初学者StudentIDStudentID将是表的 pk,它只能是整数,而且将是一个巨大的数字。

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

bigintnumeric(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,并且每秒插入一千行,你需要一个令人难以置信的 2.92 亿年才能达到 922 千万亿的限制......

INT使用 4 个字节

的存储空间,而BIGINT使用 8 个字节。特别是如果你处理大量的行和一些非聚集索引,你希望保持尽可能 - 这是我通常选择INT作为我的"ID"类型的另一个原因(除非我有一个非常强烈的迹象表明INT是不够的......

在 MSDN 联机丛书中阅读有关它的详细信息(包括所有选项)。

>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 字段的第二选择

相关内容

  • 没有找到相关文章

最新更新