Spec-Zone .ru
спецификации, руководства, описания, API
|
Трудное индексирует сканирование, может быть или полное, индексируют сканирование или диапазон, индексируют сканирование, в зависимости от условий запроса.
Когда условия для свободного индексируют сканирование, не встречаются, все еще может быть возможно избежать
создания временных таблиц для GROUP BY
запросы. Если есть условия диапазона в WHERE
пункт, этот метод читает только ключи, которые удовлетворяют эти условия.
Иначе, это выполняет индексировать сканирование. Поскольку этот метод читает все ключи в каждом диапазоне,
определенном WHERE
пункт, или сканирования, которые индексирует целое, если нет
никаких условий диапазона, мы называем это, трудное индексирует сканирование. С
трудным индексируют сканирование, группирующаяся работа выполняется только после того, как все ключи, которые
удовлетворяют условия диапазона, были найдены.
Для этого метода, чтобы работать, достаточно, что есть постоянное условие равенства для всех столбцов в запросе,
обращающемся к частям ключа, прибывающего прежде или промежуточный части GROUP BY
ключ. Константы от условий равенства заполняют любые "разрывы" в ключах поиска так, чтобы было возможно сформировать
полные префиксы из индексирования. Они индексируют префиксы, тогда может использоваться для, индексируют поиски.
Если мы требуем сортировки GROUP BY
результат, и возможно сформировать ключи
поиска, которые являются префиксами индексирования, MySQL также избегает дополнительных операций сортировки,
потому что поиск с префиксами в упорядоченном индексирует, уже получает все ключи в порядке.
Предположите, что есть индексирование idx(c1,c2,c3)
на таблице t1(c1,c2,c3,c4)
. Следующие запросы не работают со свободным, индексируют метод
доступа сканирования, описанный ранее, но все еще работают с трудным, индексируют метод доступа сканирования.
Есть разрыв в GROUP BY
, но это покрывается условием
c2 = 'a'
:
SELECT c1, c2, c3 FROM t1 WHERE c2 = 'a' GROUP BY c1, c3;
GROUP BY
не начинается с первой части ключа, но есть
условие, которое обеспечивает константу для той части:
SELECT c1, c2, c3 FROM t1 WHERE c1 = 'a' GROUP BY c2, c3;