Алгоритм соединения слиянием сортированных списков

Алгоритм соединения слиянием сортированных списков

Алгоритм соединения слиянием сортированных списков (merge join, sort merge join, sort-merge join) — разновидность алгоритма соединения.

Алгоритм получает на вход 2 таблицы и условие соединения. Результатом его работы является таблица с результатами соединения.

Входные таблицы должны быть отсортированы по столбцам, участвующим в условии соединения. Соединение осуществляется за одно сканирование (проход по) каждой из входных таблиц. То есть одна и та же строка считывается только один раз, что даёт преимущество перед соединением вложенными циклами.

Простой пример на псевдокоде:

 //нужно соединить Таблицу 1 и Таблицу 2  
 //по условию: Таблица1.Колонка1 = Таблица2.Колонка2
 //Для упрощения примера будем считать, что значения в Колонке2 уникальны

 Таблица1.Сортировать(Колонка1);
 Таблица2.Сортировать(Колонка2);
 Таблица1.ВстатьНаПервуюЗапись;
 Таблица2.ВстатьНаПервуюЗапись;
 Пока Таблица1.НеПоследняяЗапись и Tаблица2.НеПоследняяЗапись
 {
     Пока Таблица1.Колонка1 < Taблица2.Колонка2
         Таблица1.ПерейтиКСледующейЗаписи;

     Если Таблица1.Колонка1 = Таблица2.Колонка2
     {
         Вывести (Таблица1.ТекущаяЗапись, Таблица2.ТекущаяЗапись);
         Таблица1.ПерейтиКСледующейЗаписи;
     }

     Пока Таблица1.Колонка1 > Таблица2.Колонка2
     {
         Таблица2.ПерейтиКСледующейЗаписи;
     }                  
 }

Преимущества:

  • Соединение слиянием эффективнее, чем алгоритм соединения вложенными циклами, при условии, что списки изначально были отсортированы. В принципе, накладные расходы на сортировку могут быть распределены между несколькими операциями соединения.
  • Соединение слиянием в отличие от соединения с использованием хэширования может использоваться при больших размерах соединяемых таблиц.
  • Соединение слиянием может использоваться для соединений с условиями отличными от равенства, чего не позволяет алгоритм соединения хэшированием. Однако допустимы не любые условия соединения.

Недостатки:

  • Главным недостатком алгоритма является необходимость в предварительной сортировке списков. Накладные расходы на сортировку могут быть неприемлемо высокими.
  • При реализации в СУБД, соединение слиянием требует больше памяти и менее гибко, чем алгоритм соединения вложенными циклами.Многие авторы, в связи с этим, на практике рекомендуют избегать этого вида соединения. Во многих СУБД соединение слиянием по умолчанию не используется оптимизатором запросов и должно быть включено явно.



Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Полезное


Смотреть что такое "Алгоритм соединения слиянием сортированных списков" в других словарях:

  • Алгоритм соединения (СУБД) — Целью алгоритма соединения является реализация в конкретной СУБД операции соединения реляционной алгебры. Исходными данными для алгоритма являются два отношения (таблицы) и описание условия соединения. Результатом операции является отношение… …   Википедия

  • Операция соединения (СУБД) — Операция соединения (СУБД)  реализация в конкретной СУБД операции соединения реляционной алгебры. Исходными данными для операции являются два отношения (таблицы) и описание условия соединения. Результатом операции является отношение… …   Википедия

  • Оптимизация запросов СУБД — Оптимизация запросов  это 1) функция СУБД, осуществляющая поиск оптимального плана выполнения запросов из всех возможных для заданного запроса, 2) процесс изменения запроса и/или структуры БД с целью уменьшения использования вычислительных… …   Википедия

  • Оптимизатор запросов — Оптимизация запросов это функция СУБД, осуществляющая поиск наиболее оптимального плана выполнения запросов из всех возможных для заданного запроса. Один и тот же результат может быть получен СУБД различными способами (планами выполнения… …   Википедия

  • Оптимизация запросов в СУБД — Оптимизация запросов это функция СУБД, осуществляющая поиск наиболее оптимального плана выполнения запросов из всех возможных для заданного запроса. Один и тот же результат может быть получен СУБД различными способами (планами выполнения… …   Википедия

  • План выполнения запроса — План выполнения запроса  последовательность операций, необходимых для получения результата SQL запроса в реляционной СУБД. План в целом разделяется на две стадии: Выборка результатов; Сортировка и группировка, выполнение агрегаций.… …   Википедия

  • План запроса — План выполнения запроса последовательность операций, необходимых для получения результата реляционной СУБД. План в целом разделяется на две стадии: Выборка результатов; Сортировка и группировка, выполнение агрегаций. Сортировка и группировка это… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»