gpt4 book ai didi

mysql - 在 mysql 中的大表上使用 INNER JOIN 运行 UPDATE 的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-30 23:32:15 26 4
gpt4 key购买 nike

我有一个 10M 行的大表,我们称它为表 A。我还有另一个具有完全相同结构和 2M 行的表。我们称它为表 B。

每行包含大约 20 个字段(文本和数字)。

我想用表 B 中适当行的值更新表 A 中的所有行(通过主键连接)。

琐碎的更新运行几个小时:

UPDATE A 
INNER JOIN B
ON A.primary_key=B.primary_key
SET A.field1=B.field1,
A.field2=B.field2....;

你能建议一些更聪明的方法,而不是对内部连接使用一个 UPDATE 命令吗?

提前致谢!

最佳答案

听起来您可能由于生成的数据集的大小而遇到缓冲区问题。您可以尝试以较小的 block 进行,一次可能 10 万行。你可以根据PK来做。找到表A中的max primary_key,然后除以100,000得到需要的迭代次数。

// PSEUDO CODE
MAX = SELECT MAX(primary_key) FROM table A
NUM_PER_QUERY = 100000
NUM_ITERATIONS = CEIL(MAX/NUM_PER_QUERY)

for (i = 0; i < NUM_ITERATIONS; i++) {
UPDATE .... WHERE A.primary_key BETWEEN ((i * NUM_PER_QUERY) + 1) AND ((i + 1) * NUM_PER_QUERY)
}

关于mysql - 在 mysql 中的大表上使用 INNER JOIN 运行 UPDATE 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9964330/

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