mysql - 应使用哪种数据类型、大小和排序规则将哈希 SHA-512 64 位字存储到 MYSQL 数据库中

标签 mysql blob collation varchar sha512

我正在编写一个简单的工具来检查重复文件(即具有相同数据的文件)。我使用 sha-512 算法为每个文件生成哈希值。我正在使用 MYSQL 数据库来存储哈希值。

我的问题是 - 我应该使用什么数据类型、大小和排序规则在数据库中存储 sha_512 哈希值?文件哈希 (sha-512) 将成为表的主键。我应该使用二进制数据类型(如 BLOB、VARBINARY(64) 和 BINARY)还是 VARCHAR(128)?

为了获得最佳性能还需要注意哪些其他事项?

最佳答案

您需要使用BINARY(64),因为哈希值正好是 64 字节长,因此您不想使用可变长度类型。您也不想使用任何字符数据类型,因为哈希本质上是二进制的。如果没有字符,就没有任何排序规则。

固定长度以及缺乏字符编码和排序规则允许进行某些优化。如果仍然太慢,请尝试一些通用的 MySQL 优化,或者如果这也没有帮助,请尝试较小的主键大小。

关于mysql - 应使用哪种数据类型、大小和排序规则将哈希 SHA-512 64 位字存储到 MYSQL 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16436898/

相关文章:

mysql - 解决mysql中的 "Illegal mix of collations"错误

mysql - 非规范化与子/父和嵌套

java - ORA-06553 Oracle 中带有 Blob 的 java 函数参数错误

sql - 为什么是 ' 2' > '10' ?

mysql - 包含加密数据的 BLOB 上的索引

angular - 使用blob以angular 2下载xlsx文件

mysql - 在区分大小写的情况下创建的 myisam 表是否比不区分大小写的表现更好?

mysql - 选择 id 列表并更新这些行

mysql - 获取两个日期之间的记录,但有时它们可​​能为空

php - 通过链接关联数据库和 PHP