Oracle
 sql >> Base de données >  >> RDS >> Oracle

mise à jour d'une très grande table oracle

Pour éviter d'écrire dans le journal d'annulation d'Oracle si votre update l'instruction frappe chaque ligne de la table, alors vous feriez probablement mieux d'exécuter un create table as select requête qui contournera tous les journaux d'annulation, ce qui est probablement le problème que vous rencontrez car il enregistre l'impact sur 60 millions de lignes. Vous pouvez ensuite supprimer l'ancienne table et renommer la nouvelle table avec le nom de l'ancienne table.

Quelque chose comme :

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;

Pour référence, lisez quelques conseils ici :http://www.dba-oracle.com /t_efficient_update_sql_dml_tips.htm

Si vous créez essentiellement une nouvelle table et ne vous contentez pas de mettre à jour certaines des lignes d'une table, cela s'avérera probablement la méthode la plus rapide.