Oracle
 sql >> Database >  >> RDS >> Oracle

aggiornamento di una tabella Oracle molto grande

Per evitare di scrivere nel registro di annullamento di Oracle se il tuo update l'istruzione colpisce ogni singola riga della tabella, quindi è probabile che sia meglio eseguire un create table as select query che ignorerà tutti i registri di annullamento, che è probabilmente il problema che stai riscontrando poiché registra l'impatto su 60 milioni di righe. È quindi possibile eliminare la vecchia tabella e rinominare la nuova tabella con il nome della vecchia tabella.

Qualcosa come:

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;

Per riferimento, leggi alcuni dei suggerimenti qui:http://www.dba-oracle.com /t_efficient_update_sql_dml_tips.htm

Se stai fondamentalmente creando una nuova tabella e non aggiornando solo alcune delle righe di una tabella, probabilmente si rivelerà il metodo più veloce.