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

Hvad er den hurtigste måde at indsætte data i en Oracle-tabel?

Det er meget bedre at indsætte et par hundrede rækker ad gangen ved at bruge PL/SQL-tabeller og FORALL til at binde til insert-sætning. For detaljer om dette se her .

Vær også forsigtig med, hvordan du konstruerer PL/SQL-tabellerne. Hvis det overhovedet er muligt, foretrækker du i stedet at udføre alle dine transformationer direkte i SQL ved at bruge "INSERT INTO t1 SELECT ...", da det at udføre række-for-række-operationer i PL/SQL stadig vil være langsommere end SQL.

I begge tilfælde kan du også bruge direkte-sti-indsættelser ved at bruge INSERT /*+APPEND*/ , som grundlæggende omgår DB-cachen og direkte allokerer og skriver nye blokke til datafiler. Dette kan også reducere mængden af ​​logning, afhængigt af hvordan du bruger det. Dette har også nogle implikationer, så læs venligst fin manual først.

Til sidst, hvis du trunkerer og genopbygger tabellen, kan det være umagen værd først at droppe (eller markere ubrugelige) og senere genopbygge indekser.



  1. Får løbende indhold fra tabeldatabasen

  2. Gennemgang af SQL-resultater i PHP - Får ikke hele arrayet

  3. Slet forespørgsel virker ikke fra java-applikation

  4. Angiv manuelt værdien af ​​en primær nøgle i kolonnen JPA @GeneratedValue