Để tránh ghi vào nhật ký hoàn tác của Oracle nếu update
của bạn câu lệnh truy cập vào mọi hàng đơn lẻ của bảng thì bạn có khả năng tốt hơn nên chạy create table as select
truy vấn sẽ bỏ qua tất cả nhật ký hoàn tác, có thể là vấn đề bạn đang gặp phải vì nó đang ghi lại tác động trên 60 triệu hàng. Sau đó, bạn có thể bỏ bảng cũ và đổi tên bảng mới thành tên của bảng cũ.
Một cái gì đó như:
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;
Để tham khảo, hãy đọc một số mẹo tại đây: http://www.dba-oracle.com /t_enough_update_sql_dml_tips.htm
Về cơ bản, nếu bạn đang tạo một bảng mới và không chỉ cập nhật một số hàng của bảng, nó có thể sẽ chứng minh phương pháp nhanh hơn.