提高上百萬行資料insert速度的「經典」方法
有兩個結構相同的表table1,table2
將table1插入到table2中:
現在採用兩種方法:
1、指定回滾段,回滾段足夠大
set transaction use rollback segment rbs1;
insert into table1 nologging
select * from table2;
commit;
2、採用定義cursor,每5000或10000條記錄提交一次
declare
cursor cur_select is
select t1,t2,t3..... from tabl1;
v_id number;
v_t table1%rowtype;
begin
open cur_select;
loop
exit when cur_select%notfound;
fetch cur_select into v_t.t1,v_t.t2,v_t.t3..... ;
insert into table2
(t1,t2,t3......)
values
(v_t.t1,v_t.t2,v_t.t3..... );
v_id := v_id + 1;
if v_id = 10000 then
commit;
v_id := 0;
end if;
end loop;
commit;
end;
我現在只有這兩種方法,足夠笨的!請教各位高士還有沒有其他的方法?
有兩個結構相同的表table1,table2
將table1插入到table2中:
現在採用兩種方法:
1、指定回滾段,回滾段足夠大
set transaction use rollback segment rbs1;
insert into table1 nologging
select * from table2;
commit;
2、採用定義cursor,每5000或10000條記錄提交一次
declare
cursor cur_select is
select t1,t2,t3..... from tabl1;
v_id number;
v_t table1%rowtype;
begin
open cur_select;
loop
exit when cur_select%notfound;
fetch cur_select into v_t.t1,v_t.t2,v_t.t3..... ;
insert into table2
(t1,t2,t3......)
values
(v_t.t1,v_t.t2,v_t.t3..... );
v_id := v_id + 1;
if v_id = 10000 then
commit;
v_id := 0;
end if;
end loop;
commit;
end;
我現在只有這兩種方法,足夠笨的!請教各位高士還有沒有其他的方法?
請教提高上百萬行資料insert速度的「經典」方法
有兩個結構相同的表table1,table2 將table1插入到table2中 現在採用兩種方法 1 指定回滾段,回滾段足夠大 set transaction use rollback segment rbs1 insert into table1 nologging select from ta...
提高上百萬行資料insert速度的「經典」方法
提高上百萬行資料insert速度的 經典 方法 有兩個結構相同的表table1,table2 將table1插入到table2中 現在採用兩種方法 1 指定回滾段,回滾段足夠大 set transaction use rollback segment rbs1 insert into table1 ...
幾十上百萬行,如何快速查詢出表資料
答 用分頁儲存過程 函式名稱 getrecordfrompage 函式功能 獲取指定頁的資料 引數說明 tblname 包含資料的表名 fldname 關鍵欄位名 pagesize 每頁記錄數 pageindex 要獲取的頁碼 ordertype 排序型別,0 公升序,1 降序 strwhere 查...