Spec-Zone .ru
спецификации, руководства, описания, API
|
Метод Index Merge используется, чтобы получить строки с несколькими range
сканирования и объединить их результаты в одного. Слияние может произвести
объединения, пересечения, или объединения пересечений его базовых сканирований. Этот метод доступа слияния
индексирует сканирования от единственной таблицы; это не объединяет сканирования через многократные таблицы.
В EXPLAIN
вывод, метод Index Merge появляется как index_merge
в type
столбец. В этом случае, key
столбец содержит список, индексирует используемый, и key_len
содержит список самых длинных ключевых ролей для тех, индексирует.
Примеры:
SELECT * FROMtbl_name
WHEREkey1
= 10 ORkey2
= 20;SELECT * FROMtbl_name
WHERE (key1
= 10 ORkey2
= 20) ANDnon_key
=30;SELECT * FROM t1, t2 WHERE (t1.key1
IN (1,2) OR t1.key2
LIKE 'value
%') AND t2.key1
=t1.some_col
;SELECT * FROM t1, t2 WHERE t1.key1
=1 AND (t2.key1
=t1.some_col
OR t2.key2
=t1.some_col2
);
У метода Index Merge есть несколько алгоритмов доступа (замеченный в Extra
поле EXPLAIN
вывод):
Using intersect(...)
Using union(...)
Using sort_union(...)
Следующие разделы описывают эти методы более подробно.
У Индексировать алгоритма оптимизации Слияния есть следующие известные недостатки:
Если у Вашего запроса есть комплекс WHERE
пункт с
глубоко AND
/OR
вложение
и MySQL не выбирают оптимальный план, пытаются распределить сроки, используя следующие законы
тождества:
(x
ANDy
) ORz
= (x
ORz
) AND (y
ORz
)(x
ORy
) ANDz
= (x
ANDz
) OR (y
ANDz
)
Индексируйте Слияние, не применимо к полнотекстовому, индексирует. Мы планируем расширить это, чтобы покрыть их в будущем выпуске MySQL.
Перед MySQL 5.6.6, если сканирование диапазона возможно на некотором ключе, оптимизатор не будет рассматривать использование, Индексируют Объединение Слияния или Индексируют алгоритмы Объединения сортировки слиянием. Например, рассмотрите этот запрос:
SELECT * FROM t1 WHERE (goodkey1 < 10 OR goodkey2 < 20) AND badkey < 30;
Для этого запроса два плана возможны:
Индексировать сканирование Слияния, используя (goodkey1 < 10 OR goodkey2 < 20)
условие.
Сканирование диапазона, используя badkey <
30
условие.
Однако, оптимизатор рассматривает только второй план.
Выбор между различными возможными разновидностями Индексировать метода доступа Слияния и других методов доступа основан на сметах различных доступных параметров.