Перебрать и проапдейтить много записей в таблице

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
MadHarper
Сообщения: 56
Зарегистрирован: 2016.05.29, 22:30

Перебрать и проапдейтить много записей в таблице

Сообщение MadHarper »

Мучаюсь над вопросом. С апи по крону приходят новые данные (на каждый день текущего года). Соответственно это минимум 365 записей. Нужно в таблице выбирать каждый день года и апдейтить.
Вопрос как организовать это по-человечески, с оптимальной работой с базой и с процессом. Кроме просто тупого foreach ничего в голову не приходит.

someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Перебрать и проапдейтить много записей в таблице

Сообщение someweb »

365 записей это ни о чем.
foreach нестрашно, основное время все равно уходит на запись в базу.
Если хотите быстро - явно начните транзакцию, сделайте апдейт всех записей и завершите транзакцию.
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.

yan
Сообщения: 942
Зарегистрирован: 2011.03.23, 09:28
Откуда: Уфа

Re: Перебрать и проапдейтить много записей в таблице

Сообщение yan »

foreach м.б. не такой уж тупой если foreach ($query->each() as $row)
апдейты можно собирать в один запрос $updates. = $db->createCommand()->update('user',['field'=>$value],['id'=>$id]))->getRawSql().';' и выполнить за раз

Ответить