Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: множественный UPDATE
Форумы портала PHP.SU » » Работа с СУБД » множественный UPDATE

Страниц (1): [1]
 

1. LIME - 29 Января, 2012 - 04:12:54 - перейти к сообщению
необходимо сделать UPDATE что-то около 6тыс раз))
в сети предлагают пару способов
но на хабре наткнулся на мысль что несколько* запросов будут работать быстрее
могу заполнить массив и выполнить запросы поочередно либо сформировать гигантскую!!! строку для множественного ))
либо комбинировать
что посоветуете


*(здесь) тысяч )))
2. Мелкий - 29 Января, 2012 - 11:05:06 - перейти к сообщению
Если новые значения - нечто хаотичное и уникальное:
0) обернуть в одну транзакцию, если innoDB
1) через multy_query отправить
2) забить на оптимизации и прогнать тупым циклом - особенно если действие редкое

А если между значениями есть зависимость от старых или группируются как-то - то группировать. Ведь у update нет мультистрочной записи.
(Добавление)
ммм, наркоманский вариант из сумрачного разума:

создаём темповую таблицу (create temporary table), вносим в неё новые значения и значения, участвующие в условии апдейта. А потом нечто вроде
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE orig_table JOIN temp_table USING( поля из WHERE ) SET orig_table.FIELD = tmp_table.FIELD

Вот это да
3. LIME - 29 Января, 2012 - 13:38:50 - перейти к сообщению
http://habrahabr[dot]ru/qa/1154/
сначала читаются эти 6000 строк и в зависимости от одного из полей вычисляется обновляемое значение другого поля(одно из 8ми возможных)
зависимости нет(результат парсинга не предугадать)
можно каждый ряд по очереди обработать->обновить
или прочитать из базы в массив все значения(или порциями) и обновить все разом, поочередно или порциями
MyISAM.
4. LIME - 22 Февраля, 2012 - 11:27:46 - перейти к сообщению
Есть ли смысл перед таким большим кол-вом апдейтов удалять индексы и после заново индексировать?
в период апдейтов никто больше с базой не работает

 

Powered by ExBB FM 1.0 RC1