我有 1 个大表“A”(数百万行),并且仅当 TableA 中的“pack_id” = as“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/