我需要从性能和存储的角度找出存储散列的最佳方法,例如 MD5。当前的数据库是 MariaDB,将来可能是 Oracle。该表将包含数亿或数十亿条记录,每条记录应包含一个可用于搜索的哈希值。此时为了存储散列,我使用 varchar(32),但我认为这种类型不是最佳的。我还考虑了像二进制、字符这样的类型,正如我对稳定大小的理解,比如在哈希中,最好使用 char 而不是 varchar 和 binary 而不是 varbinary。另外,我考虑将哈希转换为数字,会更好吗?
那么在数据库中存储哈希的最佳方法是什么?
最佳答案
简短的回答是每种数据类型都应该以 RDBMS 支持的 native 格式存储。
这是给 甲骨文 RAW(16)
对于 MD5 哈希码。
你看这个比喻 - 有些人决定存储 DATE
使用 VARCHAR 格式的列。你得到
数据库独立性,但您不能使用为 DATE
提供的任何功能您的专栏 RDBMS
.
无论如何,您应该仔细考虑为什么在数据库中使用 HASH 列。
如果是快速识别的替代品行列更改 ,它可以为您节省大量的编码和处理。
使用 哈希码作为 key ,尝试找到至少一个原因,与使用序列生成的 key 相比,您将从 HASH key 中获利。
请注意不要仅使用 HASH 作为 key ,因为在您在自己的实现中看到所描述的积极效果之前,这是从某个来源推荐的。
关于sql - 在数据库中存储哈希的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50851139/