MySQL中的ORDER BY NULL

Mah*_*r13 34 mysql sql-order-by

什么是ORDER BY NULLMySQL?

它会降低查询速度吗?

Hai*_*vgi 44

这是为了表现; ORDER BY NULLGROUP BY子句之后添加将使您的查询更快.

手册中的解释:

默认情况下,MySQL会对所有GROUP BY col1, col2, ...查询进行排序,就像您ORDER BY col1, col2, ...在查询中指定的一样.如果您包含一个ORDER BY包含相同列列表的显式子句,MySQL会在没有任何速度惩罚的情况下对其进行优化,尽管排序仍然存在.如果查询包含GROUP BY但您希望避免对结果进行排序的开销,则可以通过指定来抑制排序ORDER BY NULL.例如:

INSERT INTO foo
SELECT a, COUNT(*) FROM bar GROUP BY a ORDER BY NULL;
Run Code Online (Sandbox Code Playgroud)

本文介绍了作者通过利用此技巧成功优化慢速查询,并完成了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来禁止排序.


Dmi*_*ich 5

由于 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 子句。