Spec-Zone.ru › MySQL 9.2

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.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/nested-loop-joins.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API