Váš přístup povede k problémům s pamětí. Nejrychlejší způsob bude tento [Dotaz upraven po Davidově komentáři, aby se postaral o nulový scénář] :
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
Výběr vložení je nejrychlejší přístup, protože vše zůstává v paměti RAM. Tento dotaz se může zpomalit, pokud vklouzne do oblasti Global temp, ale pak to vyžaduje ladění DB. Nemyslím si, že může být něco rychlejšího než toto.
Několik dalších podrobností o využití paměti dotazem:
Každý dotaz bude mít svůj vlastní PGA [Program global area], což je v podstatě RAM dostupná pro každý dotaz. Pokud tato oblast nestačí k vrácení výsledků dotazu, pak SQL engine začne používat dočasný tabulkový prostor Golabl, který je jako pevný disk a dotaz začne být pomalý. Pokud jsou data potřebná pro dotaz tak velká, že ani dočasná oblast není dostatečná, dojde k chybě tabulkového prostoru.
Takže vždy navrhněte dotaz tak, aby zůstal v PGA, jinak je to červená vlajka.