我过去曾在许多数据库系统上工作过,如果所有数据库键都是GUID / UUID值,那么在数据库之间移动条目会容易得多。我曾考虑过几次走这条路,但总是有一些不确定性,尤其是在性能和无法通过电话读取的 URL 方面。
有没有人在数据库中广泛使用 GUID?这样做我会得到什么好处,可能的陷阱是什么?
好处:
缺点:
就个人而言,我将它们用于任何规模相当大的系统中的大多数 PK,但我在一个在整个地方都复制的系统上接受了“培训”,所以我们必须拥有它们。YMMV。
我认为重复数据的事情是垃圾 - 你可以得到重复的数据,但是你这样做。代理键通常在我工作过的地方不受欢迎。我们确实使用类似 WordPress 的系统:
更新: 所以这个得到了很多 +1,我想我应该指出 GUID PK 的一个很大的缺点:聚集索引。
如果您有很多记录,并且 GUID 上有一个聚集索引,那么您的插入性能将会很糟糕,因为您在项目列表中的随机位置插入(这就是重点),而不是最后(这很快)
因此,如果您需要插入性能,可以使用 auto-inc INT,如果您想与其他人共享它,则生成一个 GUID(即,在 URL 中将其显示给用户)