我打算将文件名和其他详细信息存储在一个表中,我打算使用文件名的 sha1 哈希作为 PK。
Q1。SHA1 PK 不会是一个顺序增加/减少的数字。那么,数据库维护/search_into 和索引该键是否会消耗更多资源?如果我决定将它作为 40 字符值保存在数据库中。
Q2。我在这里读到: https ://stackoverflow.com/a/614483/986818将数据存储为二进制(20)字段。有人可以在这方面给我建议:
- a) 我是否必须将此列创建为:TYPE=integer、LENGTH=20、
COLLATION=binary、ATTRIBUTES=binary? - b) 如何将 MySQL 或 Perl 中的 sha1 值转换为存储到表中?
- c) 这 20 个字符的值是否存在重复的危险?
**
- - - - -更新 - - - - - - -
**
要求是在文件名上搜索表。用户提供文件名,我去搜索表,如果文件名不存在,则添加它。因此,要么我在 varchar(100) 文件名字段上编制索引,要么生成一个带有文件名 sha1 的列 - 希望与索引 varchar 字段相比,为 MySql 编制索引会更容易。我也可以使用我的程序中的 sha1 值对 sha1 列进行搜索。说啥?主键或只是索引键:我选择 PK 因为 DBIx 喜欢使用 PK。并且 PK 或 INDEX+UNIQ 对系统来说将是相同数量的开销(所以我认为)