优化mySQL查询-更新JOIN 2表

时间:2019-02-20 12:54:24

标签: mysql sql phpmyadmin

我有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";

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

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

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以避免使用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)上建立索引。