Мердж против UPSERT

У меня есть приложение, которое я пишу в доступе с серверной части SQL. Одна из наиболее часто используемых частей - это когда пользователь выбирает ответ на вопрос, затем запускается хранимая процедура, которая проверяет, был ли уже дан ответ, если выполнено UPDATE, если не выполнена INSERT.

Это прекрасно работает, но теперь мы обновились до SQL Server 2008, и мне было интересно, будет ли лучше / быстрее / эффективнее переписать этот SP для использования новой команды MERGE.

Кто-нибудь имеет какие-либо идеи, если это быстрее, чем делать SELECT с последующим вставкой или обновлением?

1 ответ

Решение

Не стоит усилий. Возможно, выполнимо, но это не даст вам ничего заметного.

MERGE особенно нацелен на хранилища данных, где выяснить, что вставлять / обновлять, довольно сложно. Это позволяет выполнять все операции (вставка, обновление) с ОДНЫМ набором слияний, по сравнению с одной для каждого условия. Это не имеет никакого значения в вашем случае.

У меня есть одна база данных, в которую я загружаю 3-5 миллионов строк в таблицу 300 миллионов строк - слияние повышает производительность на 50% (одно сканирование таблицы вместо двух).

Другие вопросы по тегам