Php 复制和更新10000行MySQL/CPU使用率

Php 复制和更新10000行MySQL/CPU使用率,php,mysql,sql,cpu,Php,Mysql,Sql,Cpu,我有一个PHP脚本: 将表格“新建”中的新行复制到“活动”中,并删除“新建”中的现有行 更新现有数据并删除“新”中的数据,前提是“活动”中已有一行具有相同id_度量值 我目前的解决方案使用Laravel Elount。问题是MySQL的CPU使用率非常高(在Mac上为90-100%),每次超过10000行。有没有更快的方法?也许只是SQL 编辑: 现在一切正常,除了更新部分: UPDATE foo_new as new JOIN foo_active as a

我有一个PHP脚本:

  • 将表格“新建”中的新行复制到“活动”中,并删除“新建”中的现有行
  • 更新现有数据并删除“新”中的数据,前提是“活动”中已有一行具有相同id_度量值
我目前的解决方案使用Laravel Elount。问题是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:
解决方案是索引。:)

为什么要把它放在应用层?使用mysql的强大功能删除并更新表
我也做过类似的事情,用它

1) 使用join使用表2的新值更新表1

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
)

你能给我们看看你的代码的相关部分吗?我有这个东西,但它不太好用。你认为它能更好地工作吗?@草莓检查我的答案选项2可能比OP目前正在做的任何事情都快,但它不是一个好的(如在performative中)解决方案@草莓我可以知道怎么做吗?我知道它会更新所有的行,甚至是现在更新的行,但这比获取所有的行要好,然后在应用程序层上进行比较,然后在需要更新的情况下再次更新行。“in(SELECT)”方法不是很有效。除更新部分外的所有内容现在都正常工作。我已经做了编辑。@Danyal是的,但是更新速度仍然很慢。