首页 >数据库 >mysql教程 >在 MySQL 中存储 SHA1 哈希值:VARCHAR 还是 BINARY?

在 MySQL 中存储 SHA1 哈希值:VARCHAR 还是 BINARY?

Linda Hamilton
Linda Hamilton原创
2024-11-23 22:33:14560浏览

To Store a SHA1 Hash in MySQL: VARCHAR or BINARY?

在 MySQL 中存储 SHA1 哈希值:VARCHAR 与 BINARY

在 MySQL 数据库中存储 SHA1 哈希结果时,适当的必须仔细考虑字段类型和长度。与常见做法相反,为此目的使用 VARCHAR 字段效率很低。

VARCHAR 与 BINARY

SHA1 哈希值始终为 160 位长。 VARCHAR 字段是为可变长度数据设计的,但它们为字段长度引入了一个字节的开销。因此,对于固定长度值(例如 SHA1 哈希)使用 VARCHAR 是不必要的。

另一方面,二进制字段存储二进制数据,没有任何开销。它们非常适合 SHA1 哈希等固定长度值。

字符表示

SHA1 哈希通常表示为十六进制字符串,每个字符使用 4 位。要将 SHA1 哈希的十六进制表示形式存储在 VARCHAR 字段中,需要 160/4 = 40 个字符。然而,二进制字段每个字符使用 8 位,允许将相同的哈希存储在 160/8 = 20 个字符的字段中。

推荐方法

它是建议使用 BINARY(20) 在 MySQL 中存储 SHA1 哈希值。此字段类型消除了与 VARCHAR 相关的开销,并允许有效存储哈希。此外,UNHEX 函数可用于将哈希的十六进制表示形式转换为二进制,然后将其存储到数据库中。

存储比较

存储要求的比较表明 BINARY(20) 比 CHAR(40) 存储 SHA1 哈希值更有效。例如,对于数百万条记录,BINARY(20) 需要大约 44.56M 的存储空间,而 CHAR(40) 需要 64.57M 的存储空间。随着数据集的增大,这种差异变得更加明显。

以上是在 MySQL 中存储 SHA1 哈希值:VARCHAR 还是 BINARY?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn