Скопируйте и обновите 10000 строк MySQL / использование процессора

У меня есть PHP-скрипт, который:

  • Копирует новые строки из таблицы «новый» в «активный» и удаляет существующие в «новый».
  • Обновите существующие данные и удалите их в «новые», если в «активных» уже есть строка с таким же id_measurement

Мое текущее решение использует Laravel Eloquent. Проблема в том, что загрузка ЦП MySQL очень высока (90-100% на Mac), каждый раз более 10000 строк. Есть ли более быстрый способ сделать это? Может просто с SQL?

Редактировать:
Теперь все работает нормально, ожидаем обновления:

        UPDATE foo_new as new
JOIN foo_active as active
ON active.id_bar = new.id_bar
SET active.blah=new.blah,
active.time_left=new.time_left

Это все еще очень медленно и использует много процессора.

Изменить 2:
Решением являются индексы. 🙂

-2

Решение

Почему вы переносите это на прикладной уровень? удалить и обновить таблицу, используя силу mysql
Я сделал что-то подобное использовать это

1) Обновите table1 новыми значениями table2, используя соединение

UPDATE tab1
INNER JOIN tab2 ON (tab1.DnameId = tab2.DNDOMAIN_ID)
SET
tab1.col = tab2.col;

2) Для удаления — удалить все строки из таблицы1, которых нет в таблице2.

delete from   tab1 where tab1 .id not in (
select  id from tab2
)
0

Другие решения

Других решений пока нет …