sql >> Databasteknik >  >> RDS >> Oracle

uppdatering av ett mycket stort orakelbord

För att undvika att skriva till Oracles ångralogg om din update uttalandet träffar varje enskild rad i tabellen så är det troligtvis bättre att köra en create table as select fråga som kommer att kringgå alla ångra loggar, vilket troligen är problemet du stöter på eftersom det loggar effekten över 60 miljoner rader. Du kan sedan släppa den gamla tabellen och byta namn på den nya tabellen till den gamla tabellens namn.

Något i stil med:

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;

För referens, läs några av tipsen här:http://www.dba-oracle.com /t_efficient_update_sql_dml_tips.htm

Om du i princip skapar en ny tabell och inte bara uppdaterar några av raderna i en tabell kommer det sannolikt att vara den snabbare metoden.



  1. uppdatera data i div

  2. Installera mysql-python (Windows)

  3. Laravel kan inte ansluta till databasen - Migrationer - Fel 2002

  4. Är postgres en standard och speciell användare av PostgreSQL?