优化查找性能,MySQL

时间:2015-07-11 20:25:40

标签: mysql performance

我对数据库相对较新;很抱歉,如果这是我尚未获得的101项知识。我用谷歌搜索,但没有找到令人满意的答案。

我正在编写一个程序,它遍历〜20mio文件并将它们的文件名全部放在一个表中(我强烈希望将它保存在一个表中以备将来使用)。每个file_name都包含一个BIGINT id(以及其他Ascii字符)。每个BIGINT file_name只有大约20 id秒。我现在的问题是:我可以利用这个名称结构来获得更好的查找性能吗?

到目前为止我的表结构:

CREATE TABLE IF NOT EXISTS files
        (file_name VARCHAR(40) CHARACTER SET ascii NOT NULL PRIMARY KEY,"
        id BIGINT UNSIGNED,
        ...)

我的查询语句只是:

WHERE file_name = '...'

例如,是否可以更好地索引id,然后查找file_nameid

提前感谢一大堆!

2 个答案:

答案 0 :(得分:2)

据我所知,每个ID可以有20个不同的文件名,因此ID不是唯一的。然后,您无法使用主键的ID。 如果您知道file_name是唯一的,则唯一的选择是使用file_name作为主键。如果您查找特定的file_name,这将为您提供最大性能。 如果还需要查找具有特定ID的所有文件,则必须在ID字段上创建非唯一索引。

答案 1 :(得分:1)

通常的表设计是让id成为PRIMARY KEY。如果您也想查询file_name,那么该列的索引可能是正确的选择。