Мучаюсь над вопросом. С апи по крону приходят новые данные (на каждый день текущего года). Соответственно это минимум 365 записей. Нужно в таблице выбирать каждый день года и апдейтить.
Вопрос как организовать это по-человечески, с оптимальной работой с базой и с процессом. Кроме просто тупого foreach ничего в голову не приходит.
Перебрать и проапдейтить много записей в таблице
Re: Перебрать и проапдейтить много записей в таблице
365 записей это ни о чем.
foreach нестрашно, основное время все равно уходит на запись в базу.
Если хотите быстро - явно начните транзакцию, сделайте апдейт всех записей и завершите транзакцию.
foreach нестрашно, основное время все равно уходит на запись в базу.
Если хотите быстро - явно начните транзакцию, сделайте апдейт всех записей и завершите транзакцию.
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
Re: Перебрать и проапдейтить много записей в таблице
foreach м.б. не такой уж тупой если foreach ($query->each() as $row)
апдейты можно собирать в один запрос $updates. = $db->createCommand()->update('user',['field'=>$value],['id'=>$id]))->getRawSql().';' и выполнить за раз
апдейты можно собирать в один запрос $updates. = $db->createCommand()->update('user',['field'=>$value],['id'=>$id]))->getRawSql().';' и выполнить за раз