我有一张表需要更新:
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中使用它,以及它是否有助于提高性能。
有什么想法吗?提前谢谢。
答案 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;