gpt4 book ai didi

mysql - SQL UPDATE 查询耗时过长

转载 作者:行者123 更新时间:2023-11-29 01:55:22 24 4
gpt4 key购买 nike

所以我是 MySQL 的新手,如果两个表中都存在一个单元格值,我正在尝试运行一个查询来更新列,并且该查询将永远运行(它现在已经运行了 10 分钟并且还没有结果)。我的一张表大约有 250,000 行,另一张大约有 80,000 行,所以我不确定为什么要花这么长时间。我正在使用的查询是:

USE the_db;
UPDATE table1
JOIN table2
ON table2.a = table1.b
SET table1.c = "Y";

我已经更改了表和列的名称,但查询完全相同。我在这里查看了其他答案,所有答案也都需要很长时间。任何帮助将不胜感激,谢谢。

最佳答案

对于这个查询:

UPDATE table1 JOIN
table2
ON table2.a = table1.b
SET table1.c = 'Y';

你想要在 table2(a) 上建立索引:

create index idx_table2_a on table2(a);

此外,如果 a 有多个值与每个 b 匹配,那么您也可能会生成很多中间行,这会产生很大的影响关于性能。

如果是这种情况,则将查询表述为:

UPDATE table1
SET table1.c = 'Y'
WHERE EXISTS (SELECT 1 FROM table2 WHERE table2.a = table1.b);

并且您需要相同的索引。

查询之间的区别在于,这个查询在 table2 中的第一个匹配行处停止。

关于mysql - SQL UPDATE 查询耗时过长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30645283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com