我有一个超过300,000行的表(表的总大小是600mb+)。
表中的行是事件记录,每行都有一个时间戳(时期)。
要对未过期的事件执行查询,我必须使用WHERE epoch > currentepoch,但执行这种查询大约需要5-8秒。(实际未过期事件数不超过6000个)
因此,对于未过期事件的简单计数,我的查询需要5-8秒。
对此有什么解决方案吗?我可以查询表的一部分吗?(比如忽略过期的事件,让MySQL根本不去处理它们)
注: Engine为MyISAM
Note2:我不能对表格进行规范化,因为信息都是描述之类的东西。
从一个包含300,000行的表中计算出6,000行需要5-8秒,解决方案?
谢谢
更新:谢谢大家。添加索引后,查询运行时间不到半秒。感谢你的帮助。
发布于 2011-10-20 16:50:41
为此,有一种叫做index的东西
CREATE INDEX epoch ON tablename (epoch)发布于 2011-10-20 17:01:38
如果从所有其他答案中看不出这一点,您应该在epoch列上创建一个B树index。
此外,如果您还不熟悉using EXPLAIN to study the efficiency of your queries,那么您应该熟悉。
发布于 2011-10-20 16:56:41
在where子句中使用的列上应用indexing始终是一个明智的想法。
https://stackoverflow.com/questions/7833261
复制相似问题