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

使用Select、Count和Group By的MySQL性能问题,mysql,performance,Mysql,Performance,我一直在研究编写此查询的最佳方法,但似乎无法提高性能 该查询用于构建“趋势主题”标记云 表中大约有一百万条记录,而且还在增长 InnoDB表结构是 id-int(15)[AI,主要,唯一] 主题-varchar(50) 日期时间 这是我的疑问 SELECT topic, COUNT(topic) AS topicCount FROM table WHERE datetime > DATE_SUB( NOW(), INTERVAL 24 HOUR) AND topic!='' GROU

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

该查询用于构建“趋势主题”标记云

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

InnoDB表结构是

id-int(15)[AI,主要,唯一]
主题-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毫秒左右,这太慢了

我在主题中添加了一个索引,但性能跳到了1400ms


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

您已经对主题进行了索引,但这不会提高性能


datetime
添加索引,因为您正在进行范围搜索,在该列上添加索引将提高性能。

您还需要在
datetime
上添加索引,这大大提高了我的性能-我们现在看到的查询时间约为25ms。好极了非常感谢。(顺便说一句,如果你把它加入到答案中,我会把它标记为解决方案)