我正在编写一个简单的工具来检查重复文件(即具有相同数据的文件)。我使用 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/