我想使用 UUID 作为我的 JPA 对象的 ID。

我目前只是使用 String 来存储 UUID。什么会更有效率?

有帮助吗?

解决方案

您如何衡量效率?

例如,存储 UUID(这是一个文本编码) byte[])作为一对 long 值将允许您在 64 位架构上非常快速地比较它们(比 String 比较,即逐个字符的比较)。但是,您的编码效率会受到影响,因为您必须编写自定义类型。

对你来说什么是重要的?


如果您对数据库内的性能感兴趣,性能将在一定程度上取决于您选择的数据库,但所有数据库本质上都会逐字节比较 UUID。因此,重要的是使键之间的差异更有可能出现在键的开头。

UUID 在这方面设计得很好。最好的 UUID 是“随机”风格。它们在任何地方都没有很多公共子字符串,包括开头,并且它们不会泄漏有关生成它们的机器的信息。但是,UUID 的“时间戳”样式也是一个很好的密钥,因为低位位(变化很快)位于字符串中的第一个位,而高位位(对于连续的 UUID 不会改变)出现在字符串中。之后。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top