如何在UPDATE中优化附加到CLOB的性能?

时间:2016-11-16 11:08:04

标签: sql oracle plsql

我有一张表需要更新:

create table test_tab(id number, first varchar2(100), second clob);
insert into test_tab values (1, 'john', 'kowalski');
insert into test_tab values (2, 'michael', 'surname');

现在,对于我表中的每条记录,我想在clob字段中追加一个字符串。我可以使用通常的连接运算符:

update test_tab set second = second || 'some_string,';

这样可行,但由于我的实际表格类似于80k行,因此更新过程会持续太长时间。

我正在考虑使用DBMS_LOB.APPEND(),但我不知道如何在UPDATE中使用它,以及它是否有助于提高性能。

有什么想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

当您需要更新表中的每条记录时,将表重新创建为select(CTAS)总是更快。无论您更新LOB列的方法是什么。

示例:

create table temp
as
select id, first, second||' some_string' as second
  from test_tab;

rename test_tab to old_test_tab; -- you can drop it later
rename temp to test_tab;

-- then you need to move all indexes, grants and etc from old_test_tab to test_tab;