我有1个大表“ A”(数百万行),并且仅当来自TableA的“ pack_id”为=“ hello”时,我才想根据另一个“小”表“ B”的数据更新一列。

这是我的查询:

    UPDATE tableA JOIN (SELECT DISTINCT tableB.destino, tableB.estado from table2) as tableB ON tableA.email = tableB.destino
    SET tablaA.estado = tableB.estado
    WHERE tableA.pack_id = "hello";


此查询需要很长时间。
如此之多,有时甚至无法完成。

有什么方法可以优化此查询?

谢谢。

最佳答案

您可以避免使用SELECT DISTINCT吗?

UPDATE tableA a JOIN
       tableB b
       ON a.email = b.destino
    SET a.estado = b.estado
    WHERE a.pack_id = 'hello';


然后对于此查询,您需要在a(pack_id, email)b(destino)上建立索引。

关于mysql - 优化mySQL查询-更新JOIN 2表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54786872/

10-15 23:22