我正在构建一个需要在Oracle数据库中存储以下数据类型的应用程序:
某些MD5将用作各种表之间的键,因此将被编入索引。
最终MD5和UUID代表128位数 - 我只使用RAW(16)
类型吗?
我需要能够再次获取数据(包括从数据库中的数据中实例化Java' UUID
类的新实例。)
答案 0 :(得分:0)
选项包括:
CHAR(32)
在磁盘上占用32个字节,但是人类可读RAW(16)
在磁盘上占用16个字节,但不是人类可读的 CHAR(32)
当然会消耗双倍的磁盘空间,但索引查找也会稍微慢一点,因为每个索引页面的条目数量会少一半(一半),因此通过索引访问将大约两倍和RAW(16)
一样慢。
将其转换为java.util.UUID
的努力大致相同,因此没有真正的区别。
除非以纯文本形式阅读这些值有很大的优势,否则我会使用RAW(16)