sql >> Base de Datos >  >> RDS >> Oracle

actualizar una tabla de Oracle muy grande

Para evitar escribir en el registro de deshacer de Oracle si su update declaración golpea cada una de las filas de la tabla, entonces es probable que sea mejor ejecutar create table as select consulta que omitirá todos los registros de deshacer, que es probablemente el problema con el que se está encontrando, ya que está registrando el impacto en 60 millones de filas. Luego puede soltar la tabla anterior y cambiar el nombre de la tabla nueva al nombre de la tabla anterior.

Algo como:

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;

Como referencia, lea algunos de los consejos aquí:http://www.dba-oracle.com /t_eficiente_actualización_sql_dml_tips.htm

Si básicamente está creando una nueva tabla y no solo actualizando algunas de las filas de una tabla, es probable que sea el método más rápido.