mysql - 哈希表的 MySQL 模式
问题描述
我需要存储、查询和更新大量文件哈希。这种表的最佳 mysql 模式是什么?我应该使用哈希索引,例如。
CREATE INDEX hash_index on Hashes(id) using HASH;
我可以为索引重用 PK 哈希吗?(据我了解,“使用散列”将从散列创建散列)
解决方案
文件散列是固定长度的数据项(除非您在创建一些行后更改散列类型)。如果您以十六进制或 Base 64 表示您的文件哈希,它们将包含字符和数字。例如,十六进制的 sha-256 散列需要 64 个字符(每个字符有 4 位)。
这些字符都是 8 位字符,所以不需要 unicode。如果你小心填写它们,你也不需要区分大小写。消除数据库列的所有这些特性会使值的搜索速度稍快一些。
因此,使用 ddl 将哈希设置为固定长度的 ASCII 列,如下所示:
hash CHAR(64) COLLATE 'ascii_bin'
您当然可以使用这样的列作为主键。
Raymond 正确地指出,除了某些类型的表之外,MySQL 不提供散列索引。没关系:普通的 BTREE 索引对于此类信息工作得相当好。
推荐阅读
- jquery - jQuery:显示/隐藏无限循环循环
- r - 修改最内层循环中的代码以计算不同基因列表之间基因重叠的百分比
- google-apps-script - 如何使用谷歌脚本将我的所有电子邮件从我的旧 gmail 帐户转发到新的 gmail 帐户
- html - 引导布局:获得两个滚动条
- c# - 使用存储过程在数据库中搜索
- unit-testing - 如何在 golang 中动态跳过测试?
- ada - 后置条件的含义
- excel - Excel VBA让用户输入新的工作表名称
- google-cloud-platform - setIAM 403 禁止
- azure - 在 Xamarin 表单应用程序中尝试 O365 身份验证