我想使用 UUID 作为我的 JPA 对象的 ID。
我目前只是使用一个字符串来存储 UUID。什么会更有效率?
你如何衡量效率?
例如,将 UUID(它是 a 的文本编码byte[]
)存储为几个long
值将允许您在 64 位架构上非常快速地比较它们(比String
逐个字符的比较快得多)。但是,您的编码效率会受到影响,因为您必须编写自定义类型。
在你的情况下什么是重要的?
如果您对数据库中的性能感兴趣,性能将在一定程度上取决于您选择的数据库,但基本上都是逐字节比较 UUID。因此,重要的是使键之间的差异更有可能出现在键的开头。
UUID 在这方面设计得很好。最好的 UUID 是“随机”样式。它们在任何地方都没有很多公共子字符串,包括开头,并且它们不会泄露有关生成它们的机器的信息。但是,UUID 的“时间戳”样式也是一个很好的键,因为低位(变化很快)在字符串中是第一个,而高位(对于连续的 UUID 不会改变)来之后。