正如我们所知,在Sql Server中,IDENTITY (n,m)意味着值将从n开始,增量值是m,但我注意到,所有数据库设计器都将标识列设置为IDENTITY(1,1),而没有利用来自(-2,147,483,648) to (2,147,483,647)的int数据类型的所有值,

我计划将所有标识列设为IDENTITY (-2,147,483,648, 1)(应用程序用户无法看到标识列).

这是个好主意吗?

推荐答案

如果您发现20亿个值还不够,您会发现40亿也不够(在项目的整个生命周期中需要anything个值的两倍于最初设计的值的情况并不少见*),因此您需要采取完全不同的方法(可能是长值,也可能是完全不同的值).

否则,你只会变得陌生和不可读,一无所获.

另外,谁没有数据库,在那里他们知道,例如,312项是具有一些用于测试特定事物的良好特性的项?我知道我脑子里有一些随意的身份证.他们可能会说它"太好了,他们给它起了两次名字",但我总是知道纽约是"657城市,涵盖了我们的大多数测试 case ".这只是个速记,但是-2147482991就不那么方便了.

*在此基础上再加一点.对于某些事情,你可能会说"啊,大约100",然后发现实际上是110,好吧.对于其他人,你会发现实际上是10万,你是按数量级计算出来的.数字越高,这类错误就越常见,因为最终估计数十亿的问题与最终得到几十个答案的问题不同.如果你估计在特定的情况下200是最高限额,你可能应该留出空间,也许再留出几百个.如果你在给定的情况下估计为20亿,你可能应该为更多的几千万亿留出空间.这就是说,我唯一一次看到有人真正从-20亿开始一个id,他们最终有大约3000行.

Database相关问答推荐

如何从大型Oracle数据库中删除列?

如何将对象源动态设置为子窗体

如何在 C# 控制台应用程序中执行 CMD 命令?

为什么面向对象的数据库还没有成功?

如何在 MS Access 中实现 SQL INTERSECT 和 MINUS 操作

按纬度/经度进行半径搜索

便携式(PHPPass)密码哈希.我应该使用它们吗?

主必须包括表的分区位置错误中的所有列?

苹果 ios 购买收据数据的可能最大长度是多少?

数据库中空值(nulls)使用的空间

Oracle 和 SQL Server 中的 NVARCHAR 之间的区别?

Postgresql 从多个表中删除多行

触发器内的多个插入/更新语句?

:force => true 在模式文件中是什么意思

Neo4j:逐步创建自动索引

应用程序用户应该是数据库用户吗?

是否有一个 postgres 命令来列出/删除所有materialized视图?

获取错误函数 to_date(timestamp without time zone, unknown) 不存在

从 SQLite 导出到 SQL Server

获取 xp_cmdshell 的执行权限