我应该在我的SQL Server数据库中使用int32或int64作为主键吗?

ole*_*com 13 sql-server

在SQL Server中创建新数据库时,我应该使用主键作为int32还是int64?

int32更快吗?

我认为我不想使用int32的原因是:int32数据类型的上限不会将特定表上的总事务限制为2,147,483,647吗?我无意在那里存储那么多数据,但如果我经常需要创建新记录然后删除其他过时的数据呢?很多交易以后,我不会用完钥匙吗?是否有一些方法可以解决这个问题?或者我应该只使用长数据类型.

mar*_*c_s 27

使用类型INT(int32),从1开始,您可以获得超过20亿个可能的行 - 这对于绝大多数情况来说应该足够了.使用BIGINT(int64),你得到大约9个quintillion(9个18个零 - 9'223'000亿) - 足够你?

只需几个快速计算:

  • 如果你使用INT IDENTITY从1开始,并且每秒插入一行,你需要66.5年才能达到20亿的限制....

  • 如果您使用BIGINT IDENTITY从1开始,并且每秒插入一千行,那么在达到9.22 quintillion限制之前,您需要一个令人难以置信的2.92亿年 ....

MSDN联机丛书中了解有关它的更多信息(包括所有选项).

  • 但是,如果您正在记录用户操作并且每秒发生 10k 个操作(否则,为什么要使用 MSSQL?),这意味着 20 亿个限制就足够几天了!每秒有 1k 个事件,INT (int32) 即使一个月也不够。 (2认同)