Ответ 1
Ситуация зависит от ваших обстоятельств. Если ваша таблица очень проста (не имеет ограничений внешнего ключа, всего несколько столбцов, несколько индексов), то обновление полной записи будет быстрее.
Если, однако, ваша таблица имеет множество ограничений и индексов внешнего ключа, будет быстрее сначала выбрать, а затем обновить различия. Это связано с тем, что PostgreSQL должен выполнять следующую работу для каждого столбца в обновлении:
- Проверить ограничение внешних ключей
- Обновить связанные индексы
Кроме того, изменения добавляют раздувание к таблицам, которые необходимо очистить вакуумом.
Имейте в виду, что если вы используете dynamicUpdate в базе данных со многими таблицами, а ваши обновления выглядят совсем по-другому, вы начнете выходить из кэшированных планов запросов. Эти планы стоят ресурсов для расчета свежих. Хотя, кэшированные планы могут быть полезны только для последующих запросов в том же сеансе.