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

ash*_*h p 9 oracle uuid store hyphen

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



07b319dc-7e64-4047-a3e3-63ab43864d81它存储为
OR存储是否
07b319dc-7e64-4047-a3e3-63ab43864d8107b319dc7e644047a3e363ab43864d81

任何区别?

Ste*_*stl 10

删除连字符将在数据库中每行保存4个字符,这不值得付出努力.由于这四个字符,Oracle不会明显变慢或变慢.更糟糕的是,如果要将值选择回Java应用程序并重新创建java.util.UUID对象,你需要在正确的地方重新插入连字符.

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

  • 索引可能需要更多的存储空间,但在性能方面应该没有显着差异。此外,对 UUID 的查询仅在“WHERE”子句中使用“=”才有意义,这在索引列上非常有效。 (2认同)