Выбор ответа Senior EXPLAIN и оптимизация обновлено
Когда хорош Nested Loop
Вопрос
В каком случае Nested Loop обычно самый быстрый способ соединения?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Внешняя сторона мала, а у внутренней есть индекс по ключу. Nested Loop для каждой внешней строки делает поиск во внутренней; если внешних строк десятки, а поиск идёт по индексу, это почти мгновенно.
Варианты ответа
- Обе таблицы большие и соединяются по равенству без индексов
- Обе стороны уже отсортированы по ключу соединения
- Условие только равенство, а одна таблица помещается в память
- Внешняя сторона мала, а у внутренней есть индекс по ключуправильный ответ
Разбор
Nested Loop для каждой внешней строки делает поиск во внутренней; если внешних строк десятки, а поиск идёт по индексу, это почти мгновенно. Для двух больших таблиц по равенству без индексов обычно выбирают Hash Join, а «одна сторона влезает в память» как раз его условие. Отсортированные стороны это случай Merge Join.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.