Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

memperbarui tabel oracle yang sangat besar

Untuk menghindari penulisan ke log undo Oracle jika update . Anda pernyataan menyentuh setiap baris tabel maka Anda kemungkinan lebih baik menjalankan create table as select kueri yang akan melewati semua log urungkan, yang kemungkinan merupakan masalah yang Anda hadapi karena mencatat dampaknya di 60 juta baris. Anda kemudian dapat menghapus tabel lama dan mengganti nama tabel baru dengan nama tabel lama.

Sesuatu seperti:

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;

Untuk referensi, baca beberapa tips di sini:http://www.dba-Oracle.com /t_efisien_update_sql_dml_tips.htm

Jika pada dasarnya Anda membuat tabel baru dan tidak hanya memperbarui beberapa baris tabel, ini kemungkinan akan membuktikan metode yang lebih cepat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kueri beberapa NEXTVAL dari urutan dalam satu pernyataan

  2. Hapus semua catatan kecuali yang terbaru?

  3. Tidak dapat menggunakan LISTAGG

  4. Pengecualian ORA-08103:objek tidak lagi ada saat menggunakan setfetchsize dari Hibernate

  5. PARTITION BY tidak berfungsi dalam H2 db