复制并更新10000个MySQL行/ CPU使用率

时间:2014-12-10 11:43:15

标签: php mysql sql cpu

我有一个PHP脚本:

  • 将新行从“新”复制到“有效”,并删除“新”中的现有行。
  • 如果“active”中已存在具有相同id_measurement的行,则更新现有数据并删除“new”中的数据

我目前的解决方案使用Laravel Eloquent。问题是MySQL的CPU使用率非常高(Mac上为90-100%),每次超过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

它仍然很慢并且使用了很多CPU。

编辑2: 解决方案是索引。 :)

1 个答案:

答案 0 :(得分:0)

为什么要把它带到应用层?使用mysql的强大功能删除和更新表 我做过类似的事情用它

1)使用join

使用table2的新值更新table1
UPDATE tab1
INNER JOIN tab2 ON (tab1.DnameId = tab2.DNDOMAIN_ID)
SET 
tab1.col = tab2.col;

2)删除 - 删除table1中不在table2中的所有行

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