Uw aanpak zal leiden tot geheugenproblemen. De snelste manier is deze [Query bewerkt na de opmerking van David om voor een nulscenario te zorgen] :
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
Een select insert is de snelste benadering omdat alles in het RAM blijft. Deze query kan traag worden als deze in het Globale tijdelijke gebied terechtkomt, maar dan moet de database worden afgesteld. Ik denk niet dat er iets sneller kan zijn dan dit.
Nog enkele details over geheugengebruik door Query:
Elke query heeft zijn eigen PGA [Program global area], wat in feite RAM is die beschikbaar is voor elke query. Als dit gebied niet voldoende is om queryresultaten te retourneren, begint de SQL-engine de Golabl-temp-tabelruimte te gebruiken die vergelijkbaar is met de harde schijf en begint de query langzaam te worden. Als de gegevens die nodig zijn voor een zoekopdracht zo groot zijn dat zelfs het tijdelijke gebied niet voldoende is, dan krijg je een tablespace-fout.
Ontwerp de query dus altijd zodat deze in PGA blijft, anders is het een rode vlag.