gpt4 book ai didi

oracle - 需要帮助更新 1000 万行

转载 作者:行者123 更新时间:2023-12-01 11:44:46 26 4
gpt4 key购买 nike

我需要用表 B 中的 2 列更新表 A。(表 A、B 只有 2 列相同 - col1a、co11b::col2a、col2b

示例脚本:我想用 col1b 更新所有 col1a 值,其中 col2a=col2b

UPDATE a
SET col1a = (SELECT col1b
FROM b
WHERE a.col2a = b.col2b)

由于数据量很大,我想定期提交行(比如 5000 条记录)。你能建议一下吗。

最佳答案

由于您在问题中显示的查询包含一个子查询,因此这是在表 b 上查找正在更新的每一行。这可能会很慢,而且更新是一个足够慢的操作。

根据您的表设计,我会尝试“更新 View ”或合并。 UPDATE 的能力取决于是否存在“key-preserved join”。如果您没有,则更新将不起作用。如果没有某种表格的 DDL,要给出正确的答案有点困难。

UPDATE (
select col1a, col1b, col2a, col2b
from
a join b on (a.col2a = b.col2b)
)
set col1a = col1b;

如果 UPDATE 不起作用,您可以尝试 MERGE。这应该在比更新更多的情况下工作。

merge into a
using b on (a.col2a = b.col2b)
when matched then update set a.col1a = b.col1b

这两个语句的优点是它们处理整个数据集而不是一次更新一行。可能很难获得性能良好的更新。

如果 col1a 列上有任何索引,也可能值得删除。

关于oracle - 需要帮助更新 1000 万行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16288479/

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