Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server 2008中ID列的最佳类型_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server SQL Server 2008中ID列的最佳类型

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) ...... 通过此设置,

我是SQL Server 2008的初学者。表中有一个列,如
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级别应用程序的角度。如果您将数据类型的标识种子设置为最低负数,则可以将列中存储的值总数增加一倍。