在MySQL数据库中查询64字节(char)哈希需要几秒钟。如何提高?

时间:2012-03-01 19:55:58

标签: mysql sql hash

我有一个数据库表(MySQL 5),它存储文件哈希和文件名。我正在索引数千个文件。我没有主键设置,因为我想索引所有文件,即使它们是重复的但在不同的位置。因此,如果我有2个文件X.bin和Y.bin,即使文件哈希是相同的,我也想将它们插入到我的表中,因为它们具有不同的文件名。

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

我的查询是:

SELECT FileName FROM fileinfo WHERE FileHash='qazwsxedcrfvtgbyhnujm'

除了使用像MD5这样长度为32个字符的不同文件哈希外,还有什么办法可以加快查询速度吗?

由于

1 个答案:

答案 0 :(得分:1)

尝试在FileHash列上添加键索引。不是唯一的简单键索引:

ALTER TABLE fileinfo
ADD INDEX FileHash (FileHash)

在此更改之前和之后创建EXPLAIN SELECT ....