Вашият подход ще доведе до проблеми с паметта. Най-бързият начин ще бъде този [Запитването е редактирано след коментара на Дейвид, за да се погрижи за нулевия сценарий] :
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
Изборът на вмъкване е най-бързият подход, тъй като всичко остава в RAM. Тази заявка може да стане бавна, ако влезе в глобалната температурна област, но тогава това се нуждае от настройка на DB. Не мисля, че може да има нещо по-бързо от това.
Малко повече подробности за използването на паметта от Query:
Всяка заявка ще има своя собствена PGA [Програмна глобална област], която основно е RAM, достъпна за всяка заявка. Ако тази област не е достатъчна за връщане на резултати от заявка, тогава SQL машината започва да използва Golabl temp таблично пространство, което е като твърд диск и заявката започва да става бавна. Ако данните, необходими за заявката, са толкова огромни, че дори временната област не е достатъчна, ще получите грешка в табличното пространство.
Така че винаги проектирайте заявката така, че да остане в PGA, в противен случай това е червен флаг.