使用Select,Count和Group By的MySQL性能问题

时间:2014-10-24 13:42:59

标签: mysql performance

我一直在研究编写此查询的最佳方法,但我似乎无法提高性能。

该查询用于构建“趋势主题”tagcloud。

表中有大约一百万条记录并且还在增长。

InnoDB表结构是......

id - int(15)[AI,Primary,Unique]
话题 - varchar(50)
日期时间

这是我的询问......

SELECT topic, COUNT(topic) AS topicCount 
FROM table 
WHERE datetime > DATE_SUB( NOW(), INTERVAL 24 HOUR) AND topic!='' 
GROUP BY topic HAVING topicCount>1 
ORDER BY topicCount DESC 
LIMIT 10

查询的性能徘徊在300毫秒左右,这太慢了。

我为主题添加了索引,但性能跃升至1400毫秒。

是否有更有效的方法来编写此查询,从而大大提高性能?

1 个答案:

答案 0 :(得分:1)

您已完成主题索引,但这不会提高性能。

datetime添加索引,因为您正在进行范围搜索,并且在该列上使用索引可以提高性能。