所以我一直在努力运行这个查询。这需要很长时间 它的MySQL Innodb。我正在使用的字段已编入索引。它在一个非常强大的服务器上,大约10gig分配给innodb池配置。
UPDATE TEMP_account_product p
JOIN products_temp c ON (c.`some_id` = p.`old_someid`)
SET p.`product` = c.id
WHERE p.product IS NULL;
这里要注意的是两个表都包含大约900,000行。这一行带回了大约800,000条记录(WHERE p.product IS NULL;
)
我有一种感觉,我有点搞砸了,但无论如何都认为我会尝试。
答案 0 :(得分:0)
我建议分批运行它,这样您就不需要依赖查询计划来决定在开始执行更新之前不将整个结果集放入内存中。在查询中添加LIMIT 1000之类的东西,然后运行它直到受影响的行数为零(技术取决于您的环境,但我认为它可以在SQL中完成)。
UPDATE,这不是有效选项(原样)。
果然,我在UPDATE docs:
中忽略了这一点对于多表语法...在这种情况下,不能使用ORDER BY和LIMIT。
答案 1 :(得分:0)
我认为这类请求执行缓慢的可能原因可能是: