SQL Server自增字段的最大值限制

10

SQL Server身份字段(int)的最大大小是多少?

我每天几次删除和插入几百条记录到几个表格中,我想知道这对自动标识字段会产生什么影响。

如果需要,我可以每晚运行一个作业并截断这些数据。

期待您的想法。

谢谢。

4个回答

24

一个INT可以达到2,147,483,647。

BIGINT可以达到9,223,372,036,854,775,807。


谢谢。在一天内,我达到了半百万...所以我可能不能使用任何一个而不经常截断? - Rivka
17
以每天五十万的速度,一个 BIGINT 只能维持约 50539024859 年。 :-) - Joe Stefanelli
好的,那么这就是我的答案。之后会发生什么我就不再担心了 :). - Rivka
3
@ Becky:到那时你很可能已经退休了 :-) - marc_s
2
@Becky 如果你使用INT,你将拥有4293天。这不够吗?或者每11.7年进行一次截断太多了吗? :P - aF.
显示剩余3条评论

6

2^31 - 1 (2,147,483,647) 是 int 类型的最大值。


2

限制与数据类型本身相关,而不是自动增量的事实有关。

如果你担心最大大小,你可以从零以下开始序列,从而将容量加倍,像这样:

CREATE TABLE [MYTABLE](
[ID] [int] IDENTITY(-2147483648,1),
    (...)

这是一个有趣的想法。但是,从现在开始,每天至少会进行一次或两次的删除/插入操作,未来还应该是否担心? - Rivka
1
如果你有能力的话,可以使用TRUNCATE TABLE而不是DELETE;这样会重置标识值,而不是递增。 - pvieira
我买不起那个。请参见http://stackoverflow.com/questions/8564405/sql-server-tables-specific-to-each-user - Rivka

1
  1. bigint - 范围:-2^63(-9,223,372,036,854,775,808)到2^63-1(9,223,372,036,854,775,807) 存储:8字节
  2. int - 范围:-2^31(-2,147,483,648)到2^31-1(2,147,483,647) 存储:4字节
  3. smallint - 范围:-2^15(-32,768)到2^15-1(32,767) 存储:2字节
  4. tinyint - 范围:0到255 存储:1字节

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接