将Java生成的UUID存储到Oracle DB的有效方法是什么?删除或不删除 UUID 中的连字符是否有用 - 存储/性能?
07b319dc-7e64-4047-a3e3-63ab43864d81
按原样存储
或
07b319dc-7e64-4047-a3e3-63ab43864d81
按原样存储07b319dc7e644047a3e363ab43864d81
会有什么不同吗?
删除连字符将为您在数据库中每行节省 4 个字符,这并不值得付出努力。Oracle 不会因为这四个字符而显着变慢或变快。更糟糕的是,如果您想将值选择回 Java 应用程序并重新创建java.util.UUID
对象,则需要在正确的位置重新插入连字符。
如果您想在数据库上节省一点内存,RAW(16)
(正如您的问题评论中提到的 vcsjones )将占用最小的空间。但是,如果要使用该RAW
类型,则需要将 UUID 反汇编成byte[]
数组。这有点棘手,因为java.util.UUID
只返回一个String
表示或两个long
值。UUID
从数组中重新创建对象byte[]
更加棘手。