2012-03-01 31 views
0

我有一个存储文件哈希和文件名的数据库表(MySQL 5)。我正在索引数千个文件。我没有主键集,因为我想索引所有文件,即使它们重复但位于不同位置。所以如果我有两个文件X.bin和Y.bin,即使文件哈希值相同,我也想将它们插入到我的表中,因为它们具有不同的文件名。在MySQL数据库中查询64字节(char)散列需要几秒钟的时间。如何提高?

我不想插入重复项的唯一时间是文件名和文件哈希已存在于系统中。为此,我需要对文件哈希执行查询。这是需要很长时间的地方。我正在使用长度为64个字符的SHA256哈希。我在数据库中有成千上万条记录,当我对单个散列进行查询时,需要5秒钟的时间。

我的查询是:

SELECT FileName FROM fileinfo WHERE FileHash='qazwsxedcrfvtgbyhnujm' 

比使用一个不同的文件哈希像MD5是32个字符长度的其他,有什么事我可以做些什么来加快查询?

感谢

回答

1

尝试添加上FileHash column.Not独特,简单的键索引键索引:

ALTER TABLE fileinfo 
ADD INDEX FileHash (FileHash) 

制作EXPLAIN SELECT ...在此之前改变,只是后。

+0

谢谢。我不知道这一点,我感到很蠢。 – JMS10 2012-03-01 20:14:48

相关问题