Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Najszybszy sposób na wstawienie miliona wierszy w Oracle

Twoje podejście doprowadzi do problemów z pamięcią. Najszybszym sposobem będzie to [zapytanie edytowane po komentarzu Davida, aby zająć się scenariuszem zerowym] :

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 

Wybór wstawiania jest najszybszym podejściem, ponieważ wszystko pozostaje w pamięci RAM. To zapytanie może stać się wolniejsze, jeśli wpadnie do globalnego obszaru tymczasowego, ale wtedy wymaga dostrojenia bazy danych. Nie sądzę, że może być coś szybszego niż to.

Kilka dodatkowych informacji na temat wykorzystania pamięci przez Query:

Każde zapytanie będzie miało swój własny PGA [Program globalny obszar], który jest zasadniczo dostępną pamięcią RAM dla każdego zapytania. Jeśli ten obszar nie jest wystarczający do zwrócenia wyników zapytania, silnik SQL zacznie używać tymczasowej przestrzeni tabel Golabl, która jest jak dysk twardy i zapytanie zaczyna zwalniać. Jeśli dane potrzebne do zapytania są tak duże, że nawet obszar tymczasowy nie jest wystarczający, wystąpi błąd w przestrzeni tabel.

Dlatego zawsze projektuj zapytanie tak, aby pozostało w PGA, w przeciwnym razie jest to czerwona flaga.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Słowo kluczowe „CONTINUE” w Oracle 10g PL/SQL

  2. Jak rozwiązać ORA-06512 pod numerem linii

  3. Data JavaScript do obiektu daty sql

  4. Oracle:Pobieranie przez TZNAME Czy to możliwe?

  5. Formatowanie ciągów za pomocą LITAGG w Oracle. Wyłączenie pojedynczego cudzysłowu ` ' `