Oracle中的性能调优 - 更新相同的列

时间:2017-10-25 00:52:34

标签: sql oracle

我正在Oracle中编写一个查询,以根据相同的列

更新列

UPDATE TABLE SET A = 'CG-'||A

我有类似的数据

COLUMN A
121
234
333

我需要数据

COLUMN A
CG-121
CG-234
CG-333

基本上我正在为3000万条记录做这件事并花费大量时间。有什么办法可以优化这个查询吗?如果我在A列上创建索引会改善性能吗?

1 个答案:

答案 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)。