我有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/