declare
n integer;
begin
for i in 1..100000 loop
select s.nextval into n from dual;
insert into t(id) values(n);
end loop;
end;
/
--average about 5s
declare
n integer;
begin
for i in 1..100000 loop
insert into t(id) values(s.nextval) returning id into n;
end loop;
end;
/
--average about 4s
begin
for i in 1..100000 loop
insert into t(id) values(s.nextval);
end loop;
end;
/
--average about 3s
请注意,11g直接在 PL/SQL 中支持序列表达式
否则,从Oracle Docs:
因此,任何性能提升都是微不足道的。在以下测试中,我在每次执行之间删除并重新创建了表和序列:
试验台:
测试:
您可能应该在自己的环境中重新运行这些测试或类似的测试。