Update нескольких строк sql

Статус
В этой теме нельзя размещать новые ответы.

vanderv

Старатель
Регистрация
30 Май 2009
Сообщения
270
Реакции
12
PHP:
UPDATE `Table1` SET `price`=`3048` WHERE `name`=`307080`
UPDATE `Table1` SET `price`=`3049` WHERE `name`=`307081`
UPDATE `Table1` SET `price`=`347` WHERE `name`=`315494`
UPDATE `Table1` SET `price`=`347` WHERE `name`=`315496`
UPDATE `Table1` SET `price`=`347` WHERE `name`=`315497`
UPDATE `Table1` SET `price`=`347` WHERE `name`=`315498`
UPDATE `Table1` SET `price`=`347` WHERE `name`=`315499`
UPDATE `Table1` SET `price`=`347` WHERE `name`=`339498`
UPDATE `Table1` SET `price`=`347` WHERE `name`=`344290`
Есть много запросов на обновление цен в базе. как их объединить в один запрос, дабы уменьшить нагрузку. Потомочту таких запросов порядка 2000. Или нагрузки никакой не будет и можно смело посылать столько запросов? И ещё вопрос, если WHERE не найдёт такое name в базе, что будет в этом случае?
Заранее благодарю
 
нагрузка не такая уж и большая

при жалении разнеси запросы по времени (1 -2 секунды )


и разницы что один запрос, что несколько тут нет
 
Код:
UPDATE `Table1` SET `price`=`347` WHERE `name` in ( `315494`, `315496`, `315497`, `315498`, `315499`, `339498`, `344290`) ;

Добавлено через 1 минуту
И ещё вопрос, если WHERE не найдёт такое name в базе, что будет в этом случае?

ничего не будет. совсем ничего.
 
У Вас в приведенном запросе видно, что цены у некоторых товаров одинаковы, если таких "групп" много, то можно сделать так
Код:
UPDATE `Table1` SET `price`=`3048` WHERE `name`=`307080`
UPDATE `Table1` SET `price`=`3049` WHERE `name`=`307081`
UPDATE `Table1` SET `price`=`347` WHERE `name` IN (315494, 315496, 315497, 315498, 315499, 339498, 344290)
И какгбэ при UPDATE таблица блокируется, и при очень огромном кол-ве запросов за один раз у других пользователей могут быть проблемы. Как вариант можно после каждых Н (например 300) запросов делать sleep(1); или usleep (тут в микросекундах)
 
Я вот что надумал...
Брать селектом всю таблицу... Занести его в массив по строкам...
Потом брать ту строку в которой есть нужное нам имя... менять в нём цену...
и так всё проверить... А потом удалить старую базу и создать новую...
Ну как-то так=) Как вариант?

Добавлено через 19 минут
Можнет есть решение во фреймворках? Я конечно с ними вообще никода не работал... но если там есть решение, то почему бы и нет=)
 
Я вот что надумал...
Брать селектом всю таблицу... Занести его в массив по строкам...
Потом брать ту строку в которой есть нужное нам имя... менять в нём цену...
и так всё проверить... А потом удалить старую базу и создать новую...
Ну как-то так=) Как вариант?
Добавлено через 19 минут
Можнет есть решение во фреймворках? Я конечно с ними вообще никода не работал... но если там есть решение, то почему бы и нет=)


т.е. ты посчитал что оптимизированная для выполнения запросов база данных, по времени справится намного хуже чем интерпретатор языка, который НЕ предназначен для обработки больших объемов данных? оптимизируй запросы или поменяй движок БД, если не устраивает работа текущего
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху