我正在编写一个MVC5互联网应用程序,关于模型的id字段有一个问题。
在模型中的id字段,应该使用int还是long? 我说的是用于主键的字段。如果数据库有成千上万条记录,int是否足够? 在c#中的int与SQL数据库中的int是否不同?
先提前感谢。
我正在编写一个MVC5互联网应用程序,关于模型的id字段有一个问题。
在模型中的id字段,应该使用int还是long? 我说的是用于主键的字段。如果数据库有成千上万条记录,int是否足够? 在c#中的int与SQL数据库中的int是否不同?
先提前感谢。
INT
,从1开始,您可以获得超过20亿个可能的行 - 这应该足够满足绝大多数情况。使用BIGINT
,你大约可以获得922万亿(15个零的922个 - 922'000亿)-够了吗?如果您使用从1开始的INT IDENTITY
并且您每秒插入一行,全天候,您需要66.5 年才能达到20亿限制....如果您使用从1开始的BIGINT IDENTITY
(在T-SQL中,BIGINT
定义为.NET语言中的long
或Int64
),并且您每秒插入1000行,则需要惊人的292亿年才能达到922万亿限制.... 在MSDN Books Online中阅读更多详细信息(包括所有选项)。两种方法都可以,这取决于表中将有多少记录。int每个表只允许2*10^9条记录。
如果您确定2*10^9足够,请使用int作为键。
但是: 如果有微小的机会记录数将超过2*10^9,请使用long。 如果您不知道将有多少记录,请使用long。
C#和SQL对于int
的定义是相同的,它是一种整数数据类型,范围从-2^31
到2^31 - 1
(如果你喜欢,就是2,147,483,647)。
可以看出,您的10万条记录可以在一个int
中容纳超过20,000次,所以在当前情况下,您将没问题。
然而,long
将转换为SQL中的bigint
(并没有“long”这个类型),其值上限为2^63 - 1
。
long
зұ»еһӢпјҢеҲҷеҸҜиғҪйңҖиҰҒеҗ‘иҜҘеұһжҖ§ж·»еҠ[Key]
DataAnnotationгҖӮ - Aaron Hoffman