Программисты тратят огромное количество времени, размышляя и беспокоясь о некритичных местах кода, и пытаются оптимизировать их, что исключительно негативно сказывается на последующей отладке и поддержке. Мы должны вообще забыть об оптимизации в, скажем, 97% случаев. Поспешная оптимизация является корнем всех зол. И, напротив, мы должны уделить все внимание оставшимся 3%.
— Дональд Кнут
optimization.guide
По существу вопроса, обновлять нужно только те данные, что изменились. Специалистом по hightload я себя не считаю, более опытные коллеги поправят, если ошибаюсь, но по-моему это очевидно, что операции по вставке данных в базу при любом раскладе будут дороже, чем if, незачем лишний раз байты-килобайты туда-сюда тащить, тем более, если речь о hightload.
UPDATE
Наткнулся на занятный бенчмарк, решил обновить пост:
$a = [];
for ($i = 0; $i < 9000000; $i++) {
if (!empty($a)) {}
}
// Completed in 0.221 seconds on php 7.3
$a = [];
for ($i = 0; $i < 9000000; $i++) {
if ($a) {}
}
// Completed in 0.166 seconds on php 7.3
Источник и подробности