首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL部分选择(性能问题)

MySQL部分选择(性能问题)
EN

Stack Overflow用户
提问于 2011-10-20 16:45:44
回答 5查看 226关注 0票数 1

我有一个超过300,000行的表(表的总大小是600mb+)。

表中的行是事件记录,每行都有一个时间戳(时期)。

要对未过期的事件执行查询,我必须使用WHERE epoch > currentepoch,但执行这种查询大约需要5-8秒。(实际未过期事件数不超过6000个)

因此,对于未过期事件的简单计数,我的查询需要5-8秒。

对此有什么解决方案吗?我可以查询表的一部分吗?(比如忽略过期的事件,让MySQL根本不去处理它们)

注: Engine为MyISAM

Note2:我不能对表格进行规范化,因为信息都是描述之类的东西。

从一个包含300,000行的表中计算出6,000行需要5-8秒,解决方案?

谢谢

更新:谢谢大家。添加索引后,查询运行时间不到半秒。感谢你的帮助。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-20 16:50:41

为此,有一种叫做index的东西

代码语言:javascript
复制
CREATE INDEX epoch ON tablename (epoch)
票数 3
EN

Stack Overflow用户

发布于 2011-10-20 17:01:38

如果从所有其他答案中看不出这一点,您应该在epoch列上创建一个B树index

此外,如果您还不熟悉using EXPLAIN to study the efficiency of your queries,那么您应该熟悉。

票数 3
EN

Stack Overflow用户

发布于 2011-10-20 16:56:41

where子句中使用的列上应用indexing始终是一个明智的想法。

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

https://stackoverflow.com/questions/7833261

复制
相关文章

相似问题

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