Единственная причина, по которой я могу придумать MERGE JOIN, - это когда у вас есть 2 огромных несортированных источника данных, и вы не можете вытащить их все в память, чтобы отсортировать их в конвейере.
Пожалуйста, исследуйте мир Интернета, вы обязательно найдете что-то ..
ИЗМЕНИТЬ
Использование соединения слиянием вместо поиска
Если вам нужно выполнить однократное объединение в потоке данных (в отличие от множественных поисков), рассмотрите возможность использования преобразования «Соединение слиянием» вместо преобразования «Уточняющий запрос». У Джейми Томсона есть отличный пост, в котором сравниваются два подхода и демонстрируется, что использование объединения слиянием может быть намного эффективнее, чем использование поиска. Основная причина этого заключается в том, что объединение слиянием использует потоковый подход, а не требует времени для предварительного кэширования его значений. Логика потоковой передачи также была улучшена в SSIS 2012: объединение слиянием теперь предотвращает получение слишком большого количества буферов одним входом, когда один источник намного быстрее другого.
При рассмотрении этого подхода помните о следующих вещах:
Оба входа должны быть отсортированы. В идеале эту сортировку можно вставить в исходный запрос. Если данные еще не отсортированы (т. е. без индексов), стоимость сортировки может перевесить преимущества этого подхода. Исходный компонент не заканчивается, пока он не прочитает все свои данные, поэтому, если ваши входящие данные имеют небольшое количество строк, а вы объединяете гораздо больший набор данных (что имеет место в случае этого конкретного сценария клиента) , подход Merge Join не будет идеальным. Частичный поиск в кэше лучше всего работает в таких сценариях.
Учтивость:
- ВЕБ-САЙТ MSDN
- МэттМассон
person
Murtaza
schedule
30.06.2014