我对数据库相对较新;很抱歉,如果这是我尚未获得的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_name
和id
?
提前感谢一大堆!
答案 0 :(得分:2)
据我所知,每个ID可以有20个不同的文件名,因此ID不是唯一的。然后,您无法使用主键的ID。 如果您知道file_name是唯一的,则唯一的选择是使用file_name作为主键。如果您查找特定的file_name,这将为您提供最大性能。 如果还需要查找具有特定ID的所有文件,则必须在ID字段上创建非唯一索引。
答案 1 :(得分:1)
通常的表设计是让id成为PRIMARY KEY。如果您也想查询file_name,那么该列的索引可能是正确的选择。