带有子查询的MySQL UPDATE查询永远占用

eda*_*lls 3 mysql sql performance

我有一个MySQL UPDATE查询,需要很长时间才能完成.我错过了一种更简单的方法来实现相同的结果吗?

"UPDATE table2, table1
SET table2.id_occurrences = (SELECT SUM(IF(id = table2.id, 1, 0)) FROM table1)
WHERE table2.id = table1.id;"
Run Code Online (Sandbox Code Playgroud)
  • table2包含所有可能的值id,每个值只有一个记录.
  • table1包含一些值id,但有一些值的多个记录.
  • 我需要更新的记录中table2显示的对应值的出现次数idtable1.上面的查询完成了这项工作,但当table1包含500条记录和table230,000条记录时,大约需要3分钟.我有更大的表来处理所以这太长了:)

提前致谢.

Bri*_*per 6

我认为您加入更新可能不是必要的......

UPDATE table2
    SET table2.id_occurrences = (SELECT COUNT(*) FROM table1
                                     WHERE table2.id = table1.id);
Run Code Online (Sandbox Code Playgroud)