Выбор ответа Senior EXPLAIN и оптимизация обновлено

Когда хорош Nested Loop

Вопрос

В каком случае Nested Loop обычно самый быстрый способ соединения?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Внешняя сторона мала, а у внутренней есть индекс по ключу. Nested Loop для каждой внешней строки делает поиск во внутренней; если внешних строк десятки, а поиск идёт по индексу, это почти мгновенно.

Варианты ответа

  1. Обе таблицы большие и соединяются по равенству без индексов
  2. Обе стороны уже отсортированы по ключу соединения
  3. Условие только равенство, а одна таблица помещается в память
  4. Внешняя сторона мала, а у внутренней есть индекс по ключуправильный ответ

Разбор

Nested Loop для каждой внешней строки делает поиск во внутренней; если внешних строк десятки, а поиск идёт по индексу, это почти мгновенно. Для двух больших таблиц по равенству без индексов обычно выбирают Hash Join, а «одна сторона влезает в память» как раз его условие. Отсортированные стороны это случай Merge Join.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме