update
の場合、OracleのUNDOログへの書き込みを回避するため ステートメントがテーブルのすべての行にヒットする場合は、create table as select
を実行する方がよいでしょう。 すべての元に戻すログをバイパスするクエリ。これは、6000万行にわたる影響をログに記録しているため、発生している問題である可能性があります。次に、古いテーブルを削除して、新しいテーブルの名前を古いテーブルの名前に変更できます。
次のようなもの:
create table new_people as
select l.newid,
p.col2,
p.col3,
p.col4,
p.col5
from people p
join id_conversion l
on p.id = l.id;
drop table people;
-- rebuild any constraints and indexes
-- from old people table to new people table
alter table new_people rename to people;
参考のために、ここでいくつかのヒントを読んでください: http://www.dba-oracle.com /t_efficient_update_sql_dml_tips.htm
基本的に新しいテーブルを作成していて、テーブルの一部の行を更新するだけではない場合は、より高速な方法であることが証明される可能性があります。