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.
Выбор между различными возможными разновидностями Индексировать метода доступа Слияния и других методов доступа основан на сметах различных доступных параметров.