Я думаю, что вы ошибаетесь: GROUP BY
не сортирует данные.Это поведение по умолчанию для MySQL, так как MySQL добавляет те же ORDER BY
, что и GROUP BY
, который вы установили, как вы упомянули в первом предложении.
Итак, если вы отключите сортировку,при использовании ORDER BY NULL
сортировка вообще отсутствует.GROUP BY
будет только группировать строки, используя индексы, если это возможно.Следовательно, «трюк» неправильный, так как вы удалите возможность использовать индекс для mydate
.GROUP BY
отлично работает, пока индекс подходит для него.
Итак:
SELECT field1, field2 FROM atable
GROUP BY mydate
ORDER BY NULL
должен быть действительно быстрым, если у вас есть индекс (mydate
), и
SELECT field1, field2 FROM atable
GROUP BY mydate
ORDER BY mydate DESC
должен быть таким же быстрым (в зависимости от структуры таблицы MyISAM немного медленнее в обратном порядке).
Если у вас есть предложение WHERE, убедитесь, что вы добавилистолбцы в индексе, например:
SELECT field1, field2 FROM atable
WHERE fied1 = 5
GROUP BY mydate
ORDER BY mydate DESC
потребуется индекс для (field1
, mydate
).