使用Select、Count和Group By的MySQL性能问题
我一直在研究编写此查询的最佳方法,但似乎无法提高性能 该查询用于构建“趋势主题”标记云 表中大约有一百万条记录,而且还在增长 InnoDB表结构是 id-int(15)[AI,主要,唯一]使用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
主题-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。好极了非常感谢。(顺便说一句,如果你把它加入到答案中,我会把它标记为解决方案)