2013-04-13 3 views
1

У меня есть скрипт node.js, который работает как задание cron на сервере.Ускорение выполнения огромных запросов нескольких запросов в MySQL

Он асинхронно получает данные из внешних источников (несколько последовательных запросов) и обновляет базу данных с помощью нескольких запросов запросов, в которых запросы UPDATE разделяются точкой с запятой.

Один запрос 8000-UPDATES выполняется около 55 секунд.

Есть ли способ ускорить процесс обновления базы данных?

Единственный вопрос очень прост - как

UPDATE my_table SET field1 = smth WHERE id = some_id; 

Индекс создается для идентификатора поля.

+0

Покажите нам свои запросы и индексы, чтобы мы знали структуру запросов. Сколько запросов есть? – Niels

+0

Да, я второй показываю запросы, схему и количество строк в таблице, без этой информации ее просто догадываются. – CodeMonkey

+0

Я обновляю сообщение :) – zavg

ответ

1

Уменьшение количества выполненных запросов будет вашей самой большой победой. Возможно, INSERT ... ON DUPLICATE KEY UPDATE?

INSERT INTO my_table (id, field1) 
    VALUES 
     (1, 'smth'), 
     (10, 'smth2'), 
     (88, 'smth3'), 
     (23, 'smth4'), 
     (68, 'smth5') 
    ON DUPLICATE KEY UPDATE 
     id = VALUES(id), 
     field1 = VALUES(field1); 
+0

Спасибо, ТАК МНОГО !!! Просто потрясающе, как это работает! :)) – zavg

Смежные вопросы