Обновление большого количества строк (MySQL + PHP)

Александр Екимчев

В общем, есть такая задачка:
Существует таблица в БД с полями campid, source, visits, clicks, cost, revenue. В этой таблице содержатся десятки тысяч строк. Однако регулярно данные обновляются (десятками тысяч строк ежедневно, тысячами за один раз).
Данные для обновления мы получаем в следующем формате:
Array ( [0] => Array ( [Source] => source1 [Visits] => 3347 [Clicks] => 16 [Revenue] => 4.50 [Cost] => 5.96) [1] => Array ( [Source] => source2 [Visits] => 2755 [Clicks] => 24 [Revenue] => 15.75 [Cost] => 12.90 [Profit] => 10.85)

И всё бы ничего, но таких элементов в получаемом массиве 3-4 тысячи. Задача обновить все данные:
Новое значение = Старое значение + Значение из массива
Visits = Visits + Visits
Clicks = Clicks + Clicks
Cost = Cost + Cost
Revenue = Revenue + Revenue

Если сделать это через Foreach + Sql UPDATE, то php скрипт виснет на 20 минут из за множества запросов к бд, что не есть хорошо. Возможно можно как то сделать такое обновление через один запрос (пусть и лошадиного размера).

Пока из идей только сделать какую нибудь временную таблицу, загнать туда одним запросом весь массив (приведя его сначала к адекватной структуре) а потом как то приплюсовать значения из этой временной таблицы в основную, но к сожалению погуглив пару часов в яндексе я так и не понял, как решить эту задачу :(

Помогите пожалуйста :) С меня лучики добра!

1 чел.