sql - 在数据库中存储哈希的最佳方式

标签 sql oracle mariadb

我需要从性能和存储的角度找出存储散列的最佳方法,例如 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/

相关文章:

sql - oracle10g如何知道其他用户的名字?

oracle - SQL DEV 不显示完整日期

mariadb - 使用 MariaDB 更新 Json 对象中具有特定值的字段

php - 显示所有匹配值而不是第一个

database - 将 Oracle 数据库复制到同一台服务器上测试数据库的最简单方法?

SQL - Friendship 表的最佳实践

mysql - 创建新过程时,rds 上的 mariadb 会创建新用户@ ip.ec2.host

获取匹配 parent 的mysql mariadb LIKE搜索

mysql - 如何构造这个子查询?

sql - 简单的 C 库访问 MySQL