1.mysql执行计划中会有一列 Extra
Using filesort 是Mysql里一种速度比较慢的外部排序,我们可以通过优化索引来尽量避免出现Using filesort,从而提高速度。一般是order by 后面的字段没有加index 导致
Using temporary 说明用到了临时表,一般是用了group by的原因,创建一个临时表用以执行分组操作
Using temporary, Using filesort 是比较糟糕的,要尽量排除
2.优化GROUP BY语句
默认情况下,MySQL对所有GROUP BY col1,col2...的字段进行排序,如果查询包括GROUP BY 但用户想要避免排序结果的消耗,则可以指定ORDER By NULL禁止排序:
explain select id, sum(moneys) from sales2 group by id \G explain select id, sum(moneys) from sales2 group by id order by null \G