powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Ускорить цикл с UPDATE
5 сообщений из 5, страница 1 из 1
Ускорить цикл с UPDATE
    #38325878
TeenWOLF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Есть цикл:

UPDATE mytable SET
`product_quantity` = '".$count."',
`product_price` = '".$price."'
WHERE product_ean = '".$articul."'"

он выполняется более 30 000 раз и занимает около 1 часа. Как можно его ускорить?
Слышал про MERGE, но не разобрался как это работает.

Я делаю импорт во временную таблицу mytable_tmp (занимает несколько секунд) и дальше пытаюсь объединить эти таблицы:

MERGE INTO mytable AS i
USING mytable_tmp AS e
ON i.product_ean = e.product_ean
WHEN MATCHED THEN
UPDATE SET i.product_quantity = e.product_quantity
WHEN NOT MATCHED THEN
INSERT (product_publish) VALUES (e.product_publish)

Но выдает ошибку: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MERGE INTO jzqai_jshopping_products AS myi USING jzqai_jshopping_products_tmp ' at line 1

В чем может быть проблема или что еще можно сделать?

Заранее спасибо!
...
Рейтинг: 0 / 0
Ускорить цикл с UPDATE
    #38325889
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В MySQL нет команды MERGE

product_ean - уникальное поле?
Скорее всего, вам подойдет конструкция INSERT ... ON DUPLICATE KEY UPDATE
...
Рейтинг: 0 / 0
Ускорить цикл с UPDATE
    #38325911
TeenWOLF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftВ MySQL нет команды MERGE

product_ean - уникальное поле?
Скорее всего, вам подойдет конструкция INSERT ... ON DUPLICATE KEY UPDATE

Да, product_ean - уникальное поле, артикул товара.
Суть в том, что есть большая таблица mytable с товарами. Нужно в ней обновить цены, например.
Я загружаю данные в другую таблицу - mytable_tmp и потом хотел сделать так сказать слияние этих таблиц.
В основной таблице есть поле product_ean varchar(32) utf8_general_ci и в промежуточной точно такое же

По поводу INSERT ... ON DUPLICATE KEY UPDATE - посмотрю, спасибо.
...
Рейтинг: 0 / 0
Ускорить цикл с UPDATE
    #38325944
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TeenWOLFДа, product_ean - уникальное поле, артикул товара.Насколько я понял по названию, это штрих-код (EAN) товара?
Вам сильно повезло, что он у вас до сих пор уникальный.
У нас встречался и разный EAN у одного товара, и одинаковый EAN у разных товаров. Нечасто, конечно, но закладываться на его уникальность я бы не стал.
...
Рейтинг: 0 / 0
Ускорить цикл с UPDATE
    #38326842
TeenWOLF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
INSERT ... ON DUPLICATE KEY UPDATE - вот это помогло. Время работы цикла сократилось до 3-5 сек.

Огромное спасибо за помощь!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Ускорить цикл с UPDATE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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