Chinaunix首页 | 论坛 | 博客
  • 博客访问: 91725704
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-01 16:46:32

来源:赛迪网    作者:20931

Oracle中的快速删除和快速插入:

1.快速插入

SQL> insert /**//*+append*/ into t select * from dba_objects nologging; 

9157 rows created. 


SQL> select a.xidusn,a.xidslot,a.used_ublk,a.used_urec,b.username 
 2 from v$transaction a,v$session b,v$mystat c 
 3 where a.addr = b.taddr and c.statistic# = 1 
 4 / 

 XIDUSN XIDSLOT USED_UBLK USED_UREC USERNAME 
---------- ---------- ---------- 
 2 21 1 1 CUST 

SQL> commit; 

Commit complete. 

SQL> insert into t select * from dba_objects; 

9157 rows created. 

SQL> select a.xidusn,a.xidslot,a.used_ublk,a.used_urec,b.username 
 2 from v$transaction a,v$session b,v$mystat c 
 3 where a.addr = b.taddr and c.statistic# = 1 
 4 / 

 XIDUSN XIDSLOT USED_UBLK USED_UREC USERNAME 
---------- ---------- ---------- 
 1 1 13 423 CUST

2.快速删除

建一个存储过程,达到2000条或者更多条,提交一次.

create or replace procedure p_delete 
as 
n number(10); 
cursor my_cur is select * from t1; 
begin 
n:=0; 
for i in my_cur loop  
delete from t1 where <条件>; 
n:=n+1; 
if (mod(n,2000))=0 then 
commit; 
end if; 
end loop; 
end; 
/
阅读(242) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~