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