gpt4 book ai didi

java - 使用自定义 _id 值

转载 作者:行者123 更新时间:2023-12-02 05:07:20 25 4
gpt4 key购买 nike

我有一个用户数据库,所有用户都有一个唯一的 ID (Java UUID) 来区分他们,因为其他数据(名字、IP 和姓氏)可能包含重复项。将 _id 设置为唯一 id 是个好主意吗,因为这可以让我免于创建和索引另一个字段并拥有无用的 _id 字段。

最佳答案

这是一个有争议的话题,具体情况因数据库引擎而异。我将更普遍地假设数据库引擎可能会在稍后的时间点发生变化。为了帮助您做出决定,以下是使用 UUID 作为行 ID 的一些优点和缺点:

优点:

  • 在数据不同但性质相似的表中具有唯一性
  • 使得从一个数据库引擎转移到另一个数据库引擎变得非常简单,因为行的 ID 并不完全依赖于插入时间

缺点:

  • 不允许优雅的聚集索引,因为 UUID 不是连续的。这意味着当您执行插入时,您的数据库将必须重新排列大量内存页面以保留顺序(某些数据库引擎(例如 SQL Server)创建一个“唯一符”字段来解决此问题,但最终,成本与使用 int 作为主键)
    • 使应用程序或日志文件中的调试变得更加困难,因为 int 字段比 UUID 更容易比较/查看
    • 针对表的联接比 int 慢,这对于大多数数据库实现来说都是如此

我个人的建议是使用 int 作为你的 ID。您对表的联接将会更快,并且总体上更容易调试。当然,您仍然可以将 UUID 作为外键,但随着解决方案的扩展,易于查看的小值将会派上用场。

关于java - 使用自定义 _id 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27664914/

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