2017-01-02 2 views
1

Я знаю, что MERGE используется, если нам нужно объединить несколько операций (INSERT/UPDATE/DELETE). Но в моем случае у меня есть procedure, который использует заявление MERGE для обновления нескольких columns в table. Но иногда требуется много времени для запуска, чего не ожидается, потому что данные не такие большие. Так это из-за MERGE, и нормально ли использовать merge, или я должен изменить его на UPDATE заявление?Является ли утверждение MERGE хорошим вариантом, когда мы просто обновляем таблицу?

+0

сравнить между двумя подходами и выбрать лучший из них по плану доступа, показать статистику .. так далее. –

+0

Если вы намерены только обновить, вы должны придерживаться утверждения 'UPDATE'. –

ответ

2

Я бы рекомендовал использовать UPDATE. Он более проверен и проверен и имеет меньше ошибок и может иметь лучшие планы выполнения. Также ясно видеть намерение при чтении исходного кода.

Семантика не всегда одинакова.

Если источник таблицы имеет несколько строк, которые могут быть сопоставлены с целевой строкой, то MERGE поднимет ошибку, а UPDATE будет детерминистически выбирать один из возможных вариантов.

Если эта семантика важна для вас (вы хотите утверждать, что есть только одно совпадение и ошибка, если это нарушено), вы можете захотеть придерживаться MERGE.

 Смежные вопросы

  • Нет связанных вопросов^_^