首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化查找性能,MySQL

优化查找性能,MySQL
EN

Stack Overflow用户
提问于 2015-07-11 20:25:39
回答 2查看 43关注 0票数 1

我对数据库还比较陌生,很抱歉,如果这是101条知识,我还没有吸收。我搜索了一下,但没有找到满意的答案。

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

到目前为止,我的桌子结构:

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS files
        (file_name VARCHAR(40) CHARACTER SET ascii NOT NULL PRIMARY KEY,"
        id BIGINT UNSIGNED,
        ...)

我的查找语句是:

代码语言:javascript
复制
WHERE file_name = '...'

例如,将id索引,然后查找file_nameid是否更好?

提前谢谢一堆人!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-13 12:22:59

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

票数 2
EN

Stack Overflow用户

发布于 2015-07-11 20:37:01

通常的表设计是让id作为主键。如果您也希望查询file_name,则该列上的索引可能是正确的选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31361494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档