Слияние может работать вставить, обновить или удалить операции на целевой таблице на основе результатов соединения с исходной таблицей. Например, можно синхронизировать две таблицы путем вставки, обновляя или удаляя строки в одной таблице на основе различий, найденных в другой таблице.
Действительно ли кто-либо знаком с производительностью для использования "Слияния" по сравнению с традиционной логикой, чтобы проверить существование и решить обновление или вставить затем?
Спасибо!
MERGE обычно быстрее, потому что меньше операций DML, и это также рекомендованный подход из документации. При «традиционном» способе вы обрабатываете таблицы дважды - один раз для проверки существования и один раз для выполнения вашего DML. С MERGE все инкапсулируется с помощью одной операции - отсюда один набор блокировок, один набор журналов и т. Д.
Однако то, что на самом деле делают ваши запросы, довольно субъективно. Возможно, вам стоит взглянуть на Оптимизация производительности оператора MERGE в MSDN.
Мы недавно использовали этот оператор Merge в большом проекте хранилища данных и обнаружили, что он имеет хорошую производительность, а также прост в реализации. Мы считаем, что оператор Merge очень удобен для разработки.
с нетерпением жду обсуждения
спасибо прав
У Technet есть некоторая информация в Оптимизация производительности оператора MERGE. Это в основном говорит о том, что производительность лучше, чем выполнение индивидуальных проверок, потому что требуется только один проход над данными. Однако индексы и т.д., конечно, по-прежнему важны.