Введение

Алгоритм, используемый в реляционных базах данных. Сортировка слиянием (также известная как merge join) — это алгоритм соединения, используемый в реализации реляционной системы управления базами данных. Основная задача алгоритма соединения заключается в том, чтобы для каждого уникального значения атрибута соединения найти множество кортежей в каждом отношении, содержащих это значение. Ключевая идея алгоритма сортировки слиянием состоит в предварительной сортировке отношений по атрибуту соединения, чтобы при последовательном просмотре они встречались одновременно. На практике, наиболее затратной частью выполнения сортировки слиянием является обеспечение подачи обоих входных наборов данных в отсортированном порядке. Этого можно достичь с помощью явной операции сортировки (часто внешней сортировки) или за счет использования существующего порядка в одном или обоих соединяемых отношениях. Последнее условие, называемое "удобным порядком", может возникнуть, если входные данные для соединения получены в результате сканирования индекса на основе дерева, другого соединения или другого оператора плана, который случайно выдает результат, отсортированный по соответствующему ключу. "Удобный порядок" не обязательно должен быть случайным: оптимизатор может специально искать такую возможность и выбирать план, который неоптимален для конкретной предшествующей операции, если он обеспечивает "удобный порядок", который могут использовать один или несколько последующих узлов.

Сложность

Пусть R и S – отношения, где R помещается в K страниц памяти, а S – в L страниц памяти. В худшем случае, алгоритм сортировочного слияния потребует I/O операций. Если R и S не упорядочены, то в худшем случае временная сложность будет включать дополнительные компоненты времени сортировки: K*log(K) + L*log(L), что эквивалентно O(K*log(K) + L*log(L)) (поскольку линейно-логарифмические члены преобладают над линейными членами, см. нотацию «Большое О» – порядок распространенных функций).