If you GROUP BY, make sure you ORDER BY NULL

Posted Almost 11 years ago. Visible to the public.

TL;DR: If using :group => :some_field you might want to :order => 'NULL'.

According to the man Show archive.org snapshot

By default, MySQL sorts all GROUP BY col1, col2, ... queries as if you specified ORDER BY col1, col2, ... in the query as well. If you include an ORDER BY clause explicitly that contains the same column list, MySQL optimizes it away without any speed penalty, although the sorting still occurs. If a query includes GROUP BY but you want to avoid the overhead of sorting the result, you can suppress sorting by specifying ORDER BY NULL

INSERT INTO foo
SELECT a, COUNT(*) 
FROM bar 
GROUP BY a 
ORDER BY NULL;

This changes the output of EXPLAIN from...

...
Extra,         Using where; Using temporary; Using filesort

To...

...
Extra,         Using where; Using temporary
Marcus Mitchell
Last edit
Almost 11 years ago
Posted by Marcus Mitchell to HouseTrip Deck (2013-04-15 15:50)