2009-07-08 2 views
3

Peeps,MySQL 5: Не имеет значения, в каком порядке находятся мои поля GROUP BY?

У меня есть несколько агрегированных/вычисленных полей в моем MySQL-запросе. Предложение GROUP BY динамически генерируется в зависимости от того, какие параметры пользователь выбирает в веб-форме. Любопытно, если порядок полей, перечисленных в предложении GROUP BY, может оказать какое-либо влияние на вычисления (такие как SUM, СРЕДСТВА И т.д.)

Спасибо!

+0

Когда вы пробовали две разные версии, что вы измерили? –

+0

Обязательно проверьте [mysql-optimization-guide] (http://dev.mysql.com/doc/refman/5.0/en/group-by-optimization.html) правила оптимизации для группы. Как один из ответов ниже, порядок состояний влияет на скорость поиска индекса в mysql. – trcarden

ответ

5

это будет иметь значение, если вы используете WITH ROLLUP, в противном случае, он не должен.

+0

См. Ниже, почему это может иметь большое значение для использования индекса. – Artem

4

На самом деле, я просто попробовал это для проблемы, которая у меня была, и, оказывается, это имеет большое значение для использования индекса.

Предположим, у нас есть вторичный индекс в таблице Customers с двумя столбцами (Город, штат) - и они указаны в этом порядке в индексе.

SELECT COUNT (*) FROM Customer GROUP BY City, State EXPLAIN показывает, что он использует индекс.

Но ...

SELECT COUNT (*) FROM Customers GROUP BY государства, города EXPLAIN показывает, что он не использует индекс.

Это на MySQL 5.1 с таблицей InnoDB.

+0

Просьба уточнить: вы говорите, что это имеет значение, но вы не говорите, как это сделать. Вы _imply_ это влияние на производительность, но есть _results_ любой другой? Я думаю, что это не так (если вы не используете 'WITH ROLLUP', как указано @gahooa). –