我想知道更新单个列的超大 Oracle 表中每一行的最有效方式。例如:
update mytable set mycolumn=null;
Run Code Online (Sandbox Code Playgroud)
或者:
update mytable set mycolumn=42;
Run Code Online (Sandbox Code Playgroud)
我的知识很可能是陈旧的。我所做的是改变表格以删除列。然后,我更改表以添加具有我要使用的新值的默认值的列。然后,我更改表以删除列的默认值。我发现这比仅运行更新要快得多,但我觉得有更好的方法。
Tal*_*ala -3
尝试多个更新/提交序列。在没有提交的情况下插入/更新/删除太多行会导致沉重的 IO 负载。知道块大小和记录大小等信息就可以对其进行相当优化。
对于删除表上的整个数据,truncate table x
优于delete from x
. 清除还会造成另一个流程工作负载。
编辑:您可以使用inmemory
选项,以柱状格式将表加载到内存中,然后进行更新。这实际上取决于数据库的关系和结构。请参阅这篇文章。
归档时间: |
|
查看次数: |
4356 次 |
最近记录: |