10.2.1.7 Алгоритмы объединения с вложенными циклами
MySQL выполняет объединения между таблицами с помощью алгоритма вложенных циклов или его вариаций.
Алгоритм объединения с вложенными циклами
Простой алгоритм объединения с вложенными циклами (NLJ) считывает строки из первой таблицы по одной за раз, передавая каждую строку во вложенный цикл, который обрабатывает следующую таблицу в объединении. Этот процесс повторяется столько раз, сколько остается таблиц для объединения.
Предположим, что объединение между тремя таблицами t1, t2 и t3 должно быть выполнено с использованием следующих типов объединения:
Table Join Type
t1 range
t2 ref
t3 ALL
Если используется простой алгоритм NLJ, объединение обрабатывается следующим образом:
for each row in t1 matching range {
for each row in t2 matching reference key {
for each row in t3 {
if row satisfies join conditions, send to client
}
}
}
Поскольку алгоритм NLJ передает строки по одной за раз из внешних циклов во внутренние циклы, он обычно многократно считывает таблицы, обрабатываемые во внутренних циклах.
© 2025 Oracle
Licensed under the GPLv2 License.