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.