你在存储 ID 时会使用哪种数据类型?

4

发布问题时为什么有最少字符数限制?o.O

你使用 int、bigint、tinyint 或其他什么类型?

这似乎只是一个小事情,我只是想知道通常的做法是什么。

7个回答

6

一切都取决于...这是我对问题的最爱回答!=)

大多数情况下,我们使用Guid。尽管它们在大小上比int、tinyint等更大,但我喜欢我的业务对象可以在将记录插入数据库之前知道值是什么

其他时候,我可能会使用字符串,例如客户ID等,需要在与数据库交互时轻松识别


从 SQL Server 的角度来看,GUID 可以作为 AK,但作为 PK,它们会破坏填充因子并导致索引页碎片化。因此,我们始终使用某种类型的 Int 作为 PK。 - stephbu
说得好,stephbu。我过去在知道表长度较小且事务量较低时使用GUID,但为了简单起见,又回到了整数。 - Bob Probst
在我们的大多数开发中,我们有充足的磁盘空间、充足的网络带宽和充足的服务器性能......这就是为什么我们更倾向于使用 GUID。如果我必须编写一个消费品,我可能会更倾向于使用整数或字符串。 - mattruma

1

我发现int类型已经足够大了。

变得更小是没有意义的...


1
我们也使用全局唯一标识符(GUID)。
将多个外部数据库同步到一个数据仓库中可以更好地工作。不过缺点是不太容易确定哪些项目是先创建的,但您仍然可以存储创建日期或自动编号,如果这真的是一个问题的话。

1

我非常喜欢 GUID。最好的事情是它们可以在客户端或服务器上轻松生成,而不需要进行任何数据库访问。此外,如果您必须同步数据库,它们将是救星。我唯一发现的缺点是,在 Web 应用程序中,如果您在 URL 上传递密钥,则可能会出现混乱的查询字符串。


0

这不取决于应用程序生命周期内需要存储多少个ID吗?


0

需要更多信息。你存储的是什么类型的ID?任何小于int的类型可能都不是一个好主意,使用字符串作为ID可能是合理的,因为它没有数字数量上的限制问题,也不受数字的限制,所以你可以使用用户名作为ID。


0

关于使用GUID时始终具有比较列,我会像Jason一样表示同意。不过我更喜欢序列而不是GUID,因为无论如何你都需要一个序列。

就数据类型而言,这取决于您需要存储多少记录,但通常int就足够了。


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