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