Spec-Zone .ru
спецификации, руководства, описания, API
|
Самый общий способ удовлетворить a GROUP BY
пункт должен отсканировать целую
таблицу и создать новую временную таблицу, где все строки от каждой группы последовательны, и затем используют
эту временную таблицу, чтобы обнаружить группы и применить агрегатные функции (если любой). В некоторых случаях
MySQL в состоянии сделать намного лучше чем это и избежать, чтобы создание временных таблиц при использовании
индексировало доступ.
Самые важные предварительные условия для того, чтобы использовать индексируют для GROUP
BY
это все GROUP BY
ссылочные атрибуты столбцов от того же самого
индексируют, и что индексировать хранилища его ключи в порядке (например, это - a BTREE
индексируйте и не a HASH
индексируйте). Может
ли использование временных таблиц быть заменено, индексируют доступ, также зависит, на котором части
индексирования используются в запросе, условия, определенные для этих частей, и выбранных агрегатных функций.
Есть два способа выполнить a GROUP BY
запрос через индексирует доступ, как
детализировано в следующих разделах. В первом методе группирующаяся работа применяется вместе со всеми
предикатами диапазона (если любой). Второй метод сначала выполняет сканирование диапазона, и затем группирует
получающиеся кортежи.
В MySQL, GROUP BY
используется для того, чтобы сортировать, таким образом, сервер
может также применяться ORDER BY
оптимизация к группировке. См. Раздел
8.13.13,"ORDER BY
Оптимизация".