Hai*_*vgi 44
这是为了表现; ORDER BY NULL在GROUP BY子句之后添加将使您的查询更快.
手册中的解释:
默认情况下,MySQL会对所有
GROUP BY col1, col2, ...查询进行排序,就像您ORDER BY col1, col2, ...在查询中指定的一样.如果您包含一个ORDER BY包含相同列列表的显式子句,MySQL会在没有任何速度惩罚的情况下对其进行优化,尽管排序仍然存在.如果查询包含GROUP BY但您希望避免对结果进行排序的开销,则可以通过指定来抑制排序ORDER BY NULL.例如:Run Code Online (Sandbox Code Playgroud)INSERT INTO foo SELECT a, COUNT(*) FROM bar GROUP BY a ORDER BY NULL;
本文介绍了作者通过利用此技巧成功优化慢速查询,并完成了EXPLAIN输出的相关部分.
C.E*_*uis 10
这个链接
http://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html
说它加速了使用GROUP BY的查询:
如果查询包含GROUP BY但您希望避免对结果进行排序的开销,则可以通过指定ORDER BY NULL来禁止排序.
由于 Mysql 8.0 ORDER BY NULL 不会提高查询性能。
https://dev.mysql.com/doc/refman/8.0/en/order-by-optimization.html
以前(MySQL 5.7 及更低版本),GROUP BY 在某些条件下隐式排序。在 MySQL 8.0 中,这种情况不再发生,因此不再需要在末尾指定 ORDER BY NULL 以抑制隐式排序(如之前所做的那样)。但是,查询结果可能与以前的 MySQL 版本不同。要生成给定的排序顺序,请提供 ORDER BY 子句。
| 归档时间: |
|
| 查看次数: |
17996 次 |
| 最近记录: |