我正在编写一个简单的工具来检查重复文件(即具有相同数据的文件)。我使用sha-512算法为每个文件生成哈希值。我正在使用MYSQL数据库来存储哈希值。
我的问题是 - 我应该使用什么数据类型,大小和排序规则在我的数据库中存储sha_512哈希?文件哈希(sha-512)将成为表的主键。我应该使用二进制数据类型(如BLOB,VARBINARY(64)和BINARY)还是VARCHAR(128)?
还需要注意哪些其他事项才能获得最佳表现?
答案 0 :(得分:2)
您将要使用BINARY(64)
,因为哈希值恰好是64字节长,因此您不希望使用可变长度类型。您也不想使用任何字符数据类型,因为哈希本质上是二进制的。没有字符,您没有任何排序规则。
固定长度以及缺少字符编码和排序规则允许进行某些优化。如果它仍然太慢,请尝试一些通用的MySQL优化,或者如果这也没有帮助,那么主键大小会更小。