SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 22.06.2011 18:20:49

vladislav
Участник
Зарегистрирован: 26.10.2010
Сообщений: 17

обновление нескольких строк

Добрый день!

Имеется таблица products
id (PK auto_increment)
name
price
in_stock
... остальные значения не имеют

В таблице будет порядка 10,000 записей.

Задачи:

1) обновить цену и количество у 50-ти товаров.
2) обновить цену и количество у всех товаров.

Какими способами это возможно сделать? (Главное скорость выполнения.)

З.Ы. на данный момент обновляются товары в цикле
foreach($_POST['id'])
{
    UPDATE products SET price = цене, in_stock = количеству WHERE id = id
}
но мне это совсем не нравится.

Кто знает более интересное решение, подскажите пожалуйста.

Заранее благодарен!

Неактивен

 

#2 27.06.2011 14:53:50

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: обновление нескольких строк

REPLACE или INSERT ON DUPLICATE KEY UPDATE попробуйте.

Неактивен

 

#3 01.07.2011 01:07:58

vladislav
Участник
Зарегистрирован: 26.10.2010
Сообщений: 17

Re: обновление нескольких строк

Если я правильно понимаю, то REPLACE и INSERT ON DUPLICATE KEY UPDATE это в принципе одно и тоже.

А что произойдет, если например в админке один пользователь начнет изменять простыню (форму) из 50 товаров (только цены и кол-во), а другой в это время удалить один из этих товаров?
Естественно форма передает на сервер только id, price и in_stock, поэтому вставить новую запись не получится (колонок гораздо больше), да оно и не надо.

Посмотрел как это делает phpMyAdmin:
UPDATE products SET price = цене, in_stock = количеству WHERE id = 1;
UPDATE products SET price = цене, in_stock = количеству WHERE id = 2;
UPDATE products SET price = цене, in_stock = количеству WHERE id = 3;
это все он засовывает в один запрос.

На сколько я понимаю, это равносильно трем отдельным запросам? или я не прав и этот "один" запрос выполнится быстрее?

Неужели в MySQL больше нет никаких вариантов по обновлению кучи строк?

Неактивен

 

#4 01.07.2011 11:48:32

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: обновление нескольких строк

«Моему автомобилю нужно поменять шины на новые. Можно поехать в автоцентр,
а можно поменять вручную под домом. Неужели больше нет никаких вариантов по
замене сразу четырех шин?»

Что Вас смущает? Шину украдут, пока вы будете менять? Будет ошибка, да.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson