|
|
|
Ускорить цикл с UPDATE
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Есть цикл: 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 В чем может быть проблема или что еще можно сделать? Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 17:19:16 |
|
||
|
Ускорить цикл с UPDATE
|
|||
|---|---|---|---|
|
#18+
В MySQL нет команды MERGE product_ean - уникальное поле? Скорее всего, вам подойдет конструкция INSERT ... ON DUPLICATE KEY UPDATE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 17:23:16 |
|
||
|
Ускорить цикл с UPDATE
|
|||
|---|---|---|---|
|
#18+
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 - посмотрю, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 17:32:05 |
|
||
|
Ускорить цикл с UPDATE
|
|||
|---|---|---|---|
|
#18+
TeenWOLFДа, product_ean - уникальное поле, артикул товара.Насколько я понял по названию, это штрих-код (EAN) товара? Вам сильно повезло, что он у вас до сих пор уникальный. У нас встречался и разный EAN у одного товара, и одинаковый EAN у разных товаров. Нечасто, конечно, но закладываться на его уникальность я бы не стал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 17:47:51 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=219&tid=1836475]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
19ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 307ms |

| 0 / 0 |
