Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / множественный UPDATE при импорте / 4 сообщений из 4, страница 1 из 1
08.04.2016, 12:18
    #39210945
weblloyd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
множественный UPDATE при импорте
Нужно обновлять несколько тысячей записей из файла Exel

UPDATE table SET price = $price WHERE id = $id

$price - цена из файла
$id - уникальный ID товара

Чем грозит прогнать в цикле тысячи UPDATE один за другим?
Можно ли это оптимизировать по другому (чтобы было быстрей)?
...
Рейтинг: 0 / 0
08.04.2016, 12:20
    #39210948
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
множественный UPDATE при импорте
weblloydЧем грозит прогнать в цикле тысячи UPDATE один за другим?Ничего особенного.
weblloydМожно ли это оптимизировать по другому (чтобы было быстрей)?А что, сейчас медленно?
...
Рейтинг: 0 / 0
08.04.2016, 12:45
    #39210974
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
множественный UPDATE при импорте
weblloydЧем грозит прогнать в цикле тысячи UPDATE один за другим?Излишней нагрузкой на дисковую и\или сетевую подсистему.

PS. Выгрузка (только необходимых) значений из Excel в CSV, импорт их во временную таблицу и обнолвение всех данных одним запросом намного разумнее.
...
Рейтинг: 0 / 0
08.04.2016, 13:25
    #39211030
weblloyd
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
множественный UPDATE при импорте
weblloydМожно ли это оптимизировать по другому (чтобы было быстрей)?А что, сейчас медленно?[/quot]

Ну как сказать, 10 000 позиций около минуты.

AkinaPS. Выгрузка (только необходимых) значений из Excel в CSV, импорт их во временную таблицу и обнолвение всех данных одним запросом намного разумнее.

Это все понятно, но речь идет о готовом модуле импорта для многократного использования: клиент загружает Exel с ценами - он парситься в БД.

C CASE вроде бы все намного быстрее:

Код: sql
1.
2.
3.
4.
5.
6.
UPDATE `catalog` SET `price` = CASE `id`
    WHEN 'some_id' THEN some_price
    WHEN 'some_id' THEN some_price
    WHEN 'some_id' THEN some_price
    .......
ELSE `price` END
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / множественный UPDATE при импорте / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]