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

Hurtigste måde at indsætte en million rækker i Oracle

Din tilgang vil føre til hukommelsesproblemer. Den hurtigste måde vil være denne [Forespørgsel redigeret efter Davids kommentar for at tage sig af et nulscenarie] :

insert into dtr_debtors1(SSN)
select a.S1+level
   from dual,(select nvl(max(ssn),0) S1 from dtr_debtors1) a
connect by level <= 10000 

En select insert er den hurtigste tilgang, da alt forbliver i RAM. Denne forespørgsel kan blive langsom, hvis den glider ind i det globale temperaturområde, men det skal så DB-tuning. Jeg tror ikke, der kan være noget hurtigere end dette.

Lidt flere detaljer om hukommelsesbrug af Query:

Hver forespørgsel vil have sin egen PGA [Program global area], som grundlæggende er RAM tilgængelig for hver forespørgsel. Hvis dette område ikke er tilstrækkeligt til at returnere forespørgselsresultater, begynder SQL-motoren at bruge Golabl temp tablespace, som er ligesom harddisk, og forespørgslen begynder at blive langsom. Hvis de data, der kræves af forespørgslen, er så store, at selv temperaturområdet ikke er tilstrækkeligt, vil du få en tablespace-fejl.

Så design altid en forespørgsel, så den forbliver i PGA, ellers er det et rødt flag.



  1. Sådan fungerer Acosd() i PostgreSQL

  2. ved hjælp af nuller i en mysqli udarbejdet erklæring

  3. Nem måde at eksportere en SQL-tabel uden adgang til serveren eller phpMyADMIN

  4. SQL:Henter den maksimale værdi af en kolonne og de tilsvarende andre kolonner