使用MAX(),GROUP BY和ORDER BY优化MySQL查询

时间:2014-01-08 21:16:08

标签: mysql

有什么方法可以优化此查询以更快地运行。

这是我的问题:

SELECT MAX(datum) AS maxdatum
       FROM forumtext
       GROUP BY id_forumtops
       ORDER BY maxdatum DESC
       LIMIT 10


id  select_type table       type    possible_keys   key     key_len ref     rows    Extra 
1   SIMPLE      forumtext   index   NULL            datum_2 8       NULL    283037  Using index; Using temporary; Using filesort

我不知道如何进一步提高此查询的性能。我知道它很慢,因为我使用MAX()并且没有索引。我还能做些什么来阻止它减慢查询速度吗?

UPDATE @Marcus,我按顺序在id_forumtops和datum上创建了一个多列索引。它不是很快......

id  select_type table   type    possible_keys   key             key_len ref     rows    Extra
1   SIMPLE  forumtext   index   NULL            id_forumtops_2  8       NULL    283070  Using index; Using temporary; Using filesort

1 个答案:

答案 0 :(得分:0)

LIMIT在这里并没有多大的帮助,因为MySQL必须先计算最大值,然后对它们进行排序,才能应用限制。基本上,您只是在节省带宽。

您可以为查询执行的唯一优化可能是提供覆盖索引,以加快GROUP BY并读取值。按顺序在id_forumtopsdatum上创建多列索引。