我正在Oracle中编写一个查询,以根据相同的列
更新列 UPDATE TABLE SET A = 'CG-'||A
我有类似的数据
COLUMN A
121
234
333
我需要数据
COLUMN A
CG-121
CG-234
CG-333
基本上我正在为3000万条记录做这件事并花费大量时间。有什么办法可以优化这个查询吗?如果我在A列上创建索引会改善性能吗?
答案 0 :(得分:1)
您有正确的查询:
UPDATE TABLE
SET A = 'CG-' || A;
以下是不同的选择。
首先,您可以批量执行此操作,一次说100,000行。这限制了日志的大小。
其次,您可以进行“替换”而不是更新:
create table tempt as
select * from table;
truncate table "table";
insert into table ( . . . )
select 'CG-' || A, . . .
from tempt;
第三,您可以使用生成的列并省略更新(但仅限于最新版本的Oracle)。