11

将Java生成的UUID存储到Oracle DB的有效方法是什么?删除或不删除 UUID 中的连字符是否有用 - 存储/性能?



07b319dc-7e64-4047-a3e3-63ab43864d81按原样存储

07b319dc-7e64-4047-a3e3-63ab43864d81按原样存储07b319dc7e644047a3e363ab43864d81

会有什么不同吗?

4

1 回答 1

11

删除连字符将为您在数据库中每行节省 4 个字符,这并不值得付出努力。Oracle 不会因为这四个字符而显着变慢或变快。更糟糕的是,如果您想将值选择回 Java 应用程序并重新创建java.util.UUID对象,则需要在正确的位置重新插入连字符。

如果您想在数据库上节省一点内存,RAW(16)(正如您的问题评论中提到的 vcsjones )将占用最小的空间。但是,如果要使用该RAW类型,则需要将 UUID 反汇编成byte[]数组。这有点棘手,因为java.util.UUID只返回一个String表示或两个long值。UUID从数组中重新创建对象byte[]更加棘手。

于 2012-11-28T19:24:05.253 回答