sql >> Databasteknik >  >> RDS >> Oracle

Vad är det snabbaste sättet att infoga data i en Oracle-tabell?

Det är mycket bättre att infoga några hundra rader åt gången genom att använda PL/SQL-tabeller och FORALL för att binda till insert-satsen. Mer information om detta finns här .

Var också försiktig med hur du konstruerar PL/SQL-tabellerna. Om det alls är möjligt, föredrar att istället göra alla dina transformationer direkt i SQL med "INSERT INTO t1 SELECT ..." eftersom att utföra rad-för-rad-operationer i PL/SQL fortfarande kommer att vara långsammare än SQL.

I båda fallen kan du också använda direktvägsinfogningar genom att använda INSERT /*+APPEND*/ , som i princip kringgår DB-cachen och direkt allokerar och skriver nya block till datafiler. Detta kan också minska mängden loggning, beroende på hur du använder den. Detta har också vissa implikationer, så läs fin manual först.

Slutligen, om du trunkerar och bygger om tabellen kan det vara värt att först släppa (eller markera oanvändbara) och senare bygga om index.



  1. Kan inte ansluta till RDS mysql DB från Wordpress på Amazon linux EC2-instans

  2. Bästa sättet att få resultaträkning innan LIMIT tillämpades

  3. Subquery returnerar mer än 1 rad - MySQL

  4. Hur gör man primärnyckeln seriellt?