我有这个查询,由于记录数多,所以要花几个小时,我想知道是否有一种方法可以改善它:

update tableA target
inner join
    ( select b.columnZero, b.columnOne, b.columnTwo from tableB b
      inner join tableA a ON b.columnZero = a.columnZero
    ) as source
    on target.columnZero = source.columnZero
set
    target.columnOne = source.columnOne,
    target.columnTwo = source.columnTwo;


编辑:columnZerotableB中的主键,但不是tableA中的主键。在tableA中,我有一个与上述列不同的主键。

有什么建议么?

最佳答案

在我看来,您正在执行两次相同的联接(否则我不理解您的查询)。关于什么:

update tableA a
inner join tableB b on a.columnZero = b.columnZero
set
    a.columnOne = b.columnOne,
    a.columnTwo = b.columnTwo;

关于mysql - 具有内部联接的SQL更新查询:更改以缩短执行时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11310137/

10-16 01:46