gpt4 book ai didi

sql - 为什么数据库设计者不让 IDENTITY 列从最小值而不是 1 开始?

转载 作者:太空狗 更新时间:2023-10-30 01:38:17 24 4
gpt4 key购买 nike

我们知道,在Sql Server中,IDENTITY(n,m)表示值将从n开始,递增值为m ,但我注意到所有数据库设计人员都将 Identity 列设为 IDENTITY(1,1),而没有利用来自 (-2,147,483,648) 的所有 int 数据类型的值到 (2,147,483,647),

我计划将所有标识列设为 IDENTITY (-2,147,483,648, 1),(标识列对应用程序用户隐藏)。

这是个好主意吗?

最佳答案

如果您发现 20 亿个值还不够,您会发现 40 亿个也不够(在项目的生命周期内需要两倍以上的任何 ,比它最初设计时的情况要少*),因此您需要完全采用不同的方法(可能是长值,也可能是完全不同的东西)。

否则你只会变得奇怪和不可读,没有任何好处。

此外,谁没有他们知道的数据库,例如项目 312 是否具有用于测试特定事物的一些不错的特性?我知道我脑子里烧了一些任意的 ID。他们可能称它为“太好了,他们给它命名了两次”,但我将永远知道纽约是“657 号城市,涵盖了我们的大部分测试用例”。这只是一个简写,但 -2147482991 不会那么方便。

*对此再补充一点。对于某些东西,您可能会说“啊,大约 100”,然后发现它实际上是 110,好吧。与其他人一起你会发现它实际上是 100,000 - 你超出了几个数量级。数字越高,这种错误就越常见,因为最终估计数十亿的问题与最终得到数十个答案的问题不同。如果您估计在给定情况下 200 是您的最大值,那么您可能应该为几百个以上留出空间。如果你在给定的情况下估计 20 亿,你可能应该多留出几千万亿的空间。也就是说,我唯一一次看到有人实际上以负 20 亿开始一个 id,他们最终有大约 3,000 行。

关于sql - 为什么数据库设计者不让 IDENTITY 列从最小值而不是 1 开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12176944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com