我一直在研究编写此查询的最佳方法,但我似乎无法提高性能。
该查询用于构建“趋势主题”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毫秒。
是否有更有效的方法来编写此查询,从而大大提高性能?
答案 0 :(得分:1)
您已完成主题索引,但这不会提高性能。
向datetime
添加索引,因为您正在进行范围搜索,并且在该列上使用索引可以提高性能。