最慢的速度:
create or replace procedure proc1
as
begin
for i in 1..100000
loop
execute immediate
'insert into t values('||i||')';
commit;
end loop;
end;
提升的速度:
create or replace procedure proc2
as
begin
for i in 1..100000
loop
execute immediate
'insert into t values(:x)' using i;
commit;
end loop;
end;
语句被绑定变量,解析次数变少。
下面是静态改写,汽车速度:
create or replace procedure proc3
as
begin
for i in 1.. 100000
loop
insert into t values(i);
commit;
end loop;
end;
下面做批量提交:
create or replace procedure proc4
as
begin
for i in 1..100000
loop
insert into t values(i);
end loop;
commit;
end;
一条一条插曲语句变成一个集合概念,整批写在DATA BUFFER区里,再刷到磁盘中。
insert into t select rownum from dual connect by level <= 100000;
直接路径读写方式的缺点在于由于数据不经过数据缓存区,所以在数据缓存区中一定读不到这些
数据,因此一定会有物理读。在海量数据面前,一般选择直接路径读写的方式来完成海量数据插入。
并行设置:
set timing on
create table t nologging parallel 64
as select rownum from dual connect by level <= 10000000;
并行最大的特点是占用了大多数CPU的资源。