28
Итоги
Соединение слиянием может потребовать подготовки
надо отсортировать наборы строк
или получить их заранее отсортированными
Эффективно для больших выборок
хорошо, если наборы уже отсортированы
хорошо, если нужен отсортированный результат
Не зависит от порядка соединения
Поддерживает только эквисоединения
другие не реализованы, но принципиальных ограничений нет
Чтобы начать соединение слиянием, оба набора строк должны быть
отсортированы. Хорошо, если удается получить данные уже в нужном
порядке; если нет — требуется выполнить сортировку.
Само слияние выполняется очень эффективно даже для больших
наборов строк. В качестве приятного бонуса результирующая выборка
тоже упорядочена, поэтому такой способ соединения привлекателен,
если вышестоящим узлам плана также требуется сортировка
(например, запрос с фразой ORDER BY или еще одна сортировка
слиянием).
В настоящее время соединение слиянием поддерживает только
эквисоединения, соединения по операциям «больше» или «меньше»
не реализованы.
Итак, в распоряжении планировщика есть три способа соединения:
вложенный цикл, хеширование и слияние (не считая различных
модификаций). Есть ситуации, в которых каждый из способов
оказывается более эффективным, чем остальные. Это позволяет
планировщику выбрать именно тот способ, который — как
предполагается — лучше подойдет в каждом конкретном случае.
А точность предположений напрямую зависит от имеющейся
статистики.