bil*_*oah 8 mysql order-by group-by
我一次又一次地注意到,当我EXPLAIN
用GROUP BY
子句查询时,我得到filesort
了一个额外的条件。很久以前我读过一个建议,GROUP BY NULL
在这些情况下使用以避免文件排序,它确实消除了那种令人讨厌的filesort
情况。
我认为,如果不存在ORDER BY
子句,则 dbms 将只提供任意顺序或最有效的任何顺序,而不是按某些需要文件排序的神秘列进行排序。对我来说,我需要包含一个额外的指示,这基本上相当于说“不要做任何愚蠢的事情”,这似乎很奇怪。
我的问题是为什么这甚至是必要的,并且ORDER BY NULL
实际上增加了性能?
MySQL 5.7 参考手册 / ... / SELECT 语法
如果您使用 GROUP BY,则输出行将根据 GROUP BY 列进行排序,就像您对相同的列使用 ORDER BY 一样。为了避免 GROUP BY 产生的排序开销,添加 ORDER BY NULL