Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL表关系和md5哈希的使用_Mysql_Hash_Md5_Relationship - Fatal编程技术网

MySQL表关系和md5哈希的使用

MySQL表关系和md5哈希的使用,mysql,hash,md5,relationship,Mysql,Hash,Md5,Relationship,我有一个MySQL数据库,有两个表: sample_name(存储文件名,同一个sample_散列的多个名称) 样本_散列(存储文件的散列,不会存储重复的md5) (所有表都有idint无符号非空自动增量) 我关联这两个表的第一个选项是在这两个表中创建一个md5列并关联它们。然而,这似乎有一个缺点,因为我将复制一个varchar(32),这可能会浪费数百万条记录的空间 我的第二个选项是首先计算文件哈希,获取sample\u哈希表的mysql\u insert\u id(),然后插入sampl

我有一个MySQL数据库,有两个表:

  • sample_name(存储文件名,同一个sample_散列的多个名称)
  • 样本_散列(存储文件的散列,不会存储重复的md5)
(所有表都有
id
int无符号非空自动增量)

我关联这两个表的第一个选项是在这两个表中创建一个md5列并关联它们。然而,这似乎有一个缺点,因为我将复制一个varchar(32),这可能会浪费数百万条记录的空间

我的第二个选项是首先计算文件哈希,获取sample\u哈希表的
mysql\u insert\u id()
,然后插入sample\u name表。如果sample\u哈希表中的哈希是新的,那么这是有意义的,因此我可以使用
mysql\u insert\u id()
变量

但是,如果samples\u db中已经存在散列,我不想再次存储散列,因此我将没有
mysql\u insert\u id()


如果md5已经存在,除了搜索给定md5的id以将其存储在samples_name表中之外,还有其他选择吗?如果是这样,我该怎么做呢?

根据您描述的需求,根本不需要样本哈希表


您可以在sample_name表中保留哈希值,并在该表中查找所有哈希值

你能重构将文件名和散列存储在同一个表中吗?我熟悉重构。这个过程是如何工作的?我不知道你到底是如何做到的,但是你是否已经优化了所有的字段?我正在考虑为
sample\u hash
上的hash创建一个唯一的索引,并为另一个表创建一个简单的索引。字段的类型应为char(32)。如果你没有找到任何解决办法来避免搜索,至少这样会有点麻烦faster@karamazov,这是否回答了您的问题,或者您是否有其他顾虑或保留意见?我需要将文件名和哈希保留在单独的表上,因为一个哈希可以有多个文件名。同时,我已经为md5 collumn编制了索引,这可能是最好的选择。