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

opdatering af et meget stort orakelbord

For at undgå at skrive til Oracles fortryd-log, hvis din update sætningen rammer hver enkelt række i tabellen, så er du sandsynligvis bedre stillet til at køre en create table as select forespørgsel, som vil omgå alle fortryd-logfiler, hvilket sandsynligvis er det problem, du støder på, da det logger virkningen på tværs af 60 millioner rækker. Du kan derefter slippe den gamle tabel og omdøbe den nye tabel til den gamle tabels navn.

Noget som:

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;

For reference, læs nogle af tipsene her:http://www.dba-oracle.com /t_efficient_update_sql_dml_tips.htm

Hvis du grundlæggende opretter en ny tabel og ikke bare opdaterer nogle af rækkerne i en tabel, vil det sandsynligvis vise sig at være den hurtigere metode.



  1. SQL Server BCP eksportere beskadiget fil?

  2. genbruge resultatet af et udvalgt udtryk i GROUP BY-sætningen?

  3. Lagrede procedurer ved hjælp af MySQL Workbench

  4. Diskplads implikationer af at indstille MySQL kolonneværdi til NULL i stedet for 0 eller ''