1

我们有一个名为 Parts 的数据库表。每一行都是系统中的一个部分。该表的主键称为 ID,它是身份种子,是整数数据类型。我们正在向该表添加新部件。

我的用户给了我大约 1000 行来添加。我注意到他们希望 ID 从 1000000 一直到 14230004。所以我将通过设置身份插入来添加新行。此外,应用程序有时会在其他表中引用添加的行。这些行也以树形视图的形式呈现在 Web 应用程序中。

我的问题是,在我的情况下,从 1000000 开始你的 ID 的主键不是一个坏习惯,我可以从 1 开始。从 1 开始是否有助于更好地索引表,从而加快检索时间?据我所知,从如此大的整数开始 ID 并没有真正的业务需求。我只是想就是否应该按用户从 1 开始 ID 获得意见。

4

3 回答 3

1

没关系。SQL 中的 int 将占用与任何其他 int 一样多的空间。它们都使用 4 个字节的存储空间。索引不会关心数字是什么。

但是,您将更快地浏览所有可用的 ID。应该不是问题,因为 ms sql int 最大值为 2,147,483,647 (2^31-1)

于 2013-02-11T17:57:46.767 回答
1

好的 - 所以从 100 万而不是 1 开始 - 你手头有 2.04 行而不是 21.4 亿行。

如果您从 100 万开始使用,并且您每秒、全天候、全天、一年中的每一天都INT IDENTITY插入一行- 那么您需要63.4 年(而不是 66.5 年)才能达到 20 亿的限制...... .

你够了吗??

于 2013-02-11T17:59:18.530 回答
1

我的问题是,在我的情况下,从 1000000 开始你的 ID 的主键不是一个坏习惯,我可以从 1 开始。

通常,当你看到这样的事情时,是有原因的。

从 1 开始是否有助于更好地索引表,从而加快检索时间?

不。当存储整数时,1000000 占用的空间不超过 1。在给定相同数量和分布的行以及相同且无偏的索引的情况下,dbms 可以找到 1000000 的速度与找到 1 的速度一样快。

我只是想就是否应该按用户从 1 开始 ID 获得意见。

不,您不应该强迫用户从 1 开始。您应该尝试找出为什么其他人(可能知道您不知道的事情)让他们从不同的数字开始。

于 2013-02-11T17:59:50.820 回答