在Oracle中有效地存储MD5和UUID

时间:2018-02-27 15:04:06

标签: oracle sqldatatypes

我正在构建一个需要在Oracle数据库中存储以下数据类型的应用程序:

  • MD5(文件散列)
  • Java生成的UUID

某些MD5将用作各种表之间的键,因此将被编入索引。

最终MD5和UUID代表128位数 - 我只使用RAW(16)类型吗?

我需要能够再次获取数据(包括从数据库中的数据中实例化Java' UUID类的新实例。)

1 个答案:

答案 0 :(得分:0)

选项包括:

  • CHAR(32)在磁盘上占用32个字节,但是人类可读
  • RAW(16)在磁盘上占用16个字节,但不是人类可读的

CHAR(32)当然会消耗双倍的磁盘空间,但索引查找也会稍微慢一点,因为每个索引页面的条目数量会少一半(一半),因此通过索引访问将大约两倍和RAW(16)一样慢。

将其转换为java.util.UUID的努力大致相同,因此没有真正的区别。

除非以纯文本形式阅读这些值有很大的优势,否则我会使用RAW(16)