gpt4 book ai didi

sql - update x set y = null 需要很长时间

转载 作者:行者123 更新时间:2023-12-03 20:54:23 25 4
gpt4 key购买 nike

在工作中,我有一个大表(大约 300 万行,比如 40-50 列)。我有时需要清空一些列并用新数据填充它们。我没想到的是

UPDATE table1 SET y = null

比用生成的数据填充列花费的时间要多得多,例如,在 sql 查询中来自同一表的其他列或从子查询中的其他表查询。我是否一次遍历所有表行(如上面的更新查询中)或者我是否使用游标逐行遍历表(使用 pk)都没有关系。无论我在工作中使用大表还是创建一个小测试表并用数十万个测试行填充它都没有关系。将列设置为 null 总是比用一些动态数据更新列(每行不同)花费更长的时间(在整个测试中,我遇到了 2 到 10 的因素)。

这是什么原因?将列设置为空时,Oracle 会做什么?或者 - 我的推理错误是什么?

谢谢你的帮助!

P.S.:我使用的是 oracle 11g2,并且使用 plsql developer 和 oracle sql developer 都发现了这些结果。

最佳答案

Y 列是否已编入索引?可能是将列设置为 null 意味着 Oracle 必须从索引中删除,而不仅仅是更新它。如果是这种情况,您可以在更新数据后删除并重建它。

编辑:

是只有 Y 列出现了问题,还是独立于正在更新的列?您可以发布表定义,包括约束吗?

关于sql - update x set y = null 需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8079026/

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