哈希表的mysql模式

ih99xse1  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(304)

我需要存储,查询和更新大量的文件哈希。这种表的最佳mysql模式是什么?我应该使用散列索引吗。 CREATE INDEX hash_index on Hashes(id) using HASH; 我可以重用索引的pk散列吗(据我所知,“使用散列”将从散列创建散列)

bnl4lu3b

bnl4lu3b1#

文件哈希是固定长度的数据项(除非在创建一些行之后更改哈希类型)。如果用十六进制或以64为基数表示文件哈希值,它们将包含字符和数字。例如,十六进制的sha-256哈希值需要64个字符(每个字符4位)。
这些字符都是8位字符,因此不需要unicode。如果你在填写时很小心,你也不需要区分大小写。消除数据库列的所有这些特性会使值的搜索速度稍微加快。
因此,使用ddl将哈希值设为固定长度的ascii列,如下所示:

hash CHAR(64) COLLATE 'ascii_bin'

您当然可以使用这样的列作为主键。
raymond正确地指出,除了某些类型的表之外,mysql不提供散列索引。没关系:对于这种信息,普通的btree索引工作得相当好。

相关问题