2

给定表格:

CREATE TABLE Table1
(
    UniqueID int IDENTITY(1,1)
    ...etc
)

现在,您为什么要将增量设置为 1 以外的值?

我可以理解以不同方式设置初始种子值。例如,假设您每个月创建一个数据表(例如Table1_082009, Table1_092009)并希望在旧表停止的地方开始新表的 UniqueID。(我自己可能不会使用这种策略,但是,嘿,我可以看到人们这样做)。

但是对于增量?我只能想象它在非常奇怪的情况下有用,例如:

  • 在插入初始数据之后,也许稍后有人会想要打开标识插入并在间隙中插入新行,但是为了有效地查找索引会希望行彼此靠近?
  • 如果您直接基于 URL 查找 id,并且希望让人们更难任意访问其他项目(例如,用户无法计算出将 URL 后缀从 更改/GetData?id=1000/GetData?id=1001,您设置增加 437 以便下一个 url 实际上是/GetData?id=1437)?当然,如果这是您的“安全”,那么您可能已经遇到麻烦了……

我想不出别的了。有没有人使用不是 1 的增量,为什么?我真的只是好奇。

4

3 回答 3

4

一个想法可能是使用它来促进数据的分区(尽管可能有更多“自动化”的方法来做到这一点)

  • 考虑到您有两台服务器:
    • 在一台服务器上,您从 1 开始并以 2 递增
    • 在另一台服务器上,您从 2 开始并以 2 递增。
  • 然后,从您的应用程序中,您发送的一半插入到一台服务器,另一半插入到第二台服务器
    • 某种软件负载平衡

这样,您仍然可以识别您的条目:“UniqueID”仍然是唯一的,即使数据在两个服务器/表上拆分。

但这只是一个疯狂的想法——可能还有其他用途……

于 2009-08-05T10:53:09.537 回答
2

曾经,为了纯粹的乐趣,(哦,是的,我们有狂野的一面)决定负增量。奇怪的是,这些数字同时变大而价值变小。

我几乎无法在椅子上静坐。


编辑(事后思考):
您认为 IDENTITY 的创建者爱上了 FOR 循环?你知道..

for (i = 0; i<=99; i+=17)

或者对于那些非分号的人

For i = 0 to 100 step 17
于 2009-08-05T12:28:32.127 回答
0

仅供娱乐。你必须真的很无聊。

于 2009-08-05T15:12:46.357 回答