首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MAX()、GROUP BY en ORDER BY优化MySQL查询

使用MAX()、GROUP BY en ORDER BY优化MySQL查询
EN

Stack Overflow用户
提问于 2014-01-09 05:16:08
回答 1查看 509关注 0票数 0

有没有什么方法可以优化这个查询,使其运行得更快。

下面是我的问题:

代码语言:javascript
复制
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上创建了一个多列索引。它并不是很快...

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2014-01-09 05:40:05

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

您可以对查询进行的惟一优化可能是提供一个覆盖索引来加快GROUP BY和读取值的速度。按此顺序在id_forumtopsdatum上创建多列索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21006695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档