中易网

如何加快执行delete语句的速度

答案:2  悬赏:80  
解决时间 2021-02-22 09:43
如何加快执行delete语句的速度
最佳答案
分批commit
CREATE OR REPLACe PROCEDURE BATCH_DELETE(DML VARCHAR2, ONCE_COUNT NUMBER) IS

DELETED_COUNT NUMBER := 0;

BEGIN

DBMS_OUTPUT.PUT_LINE('PROCESS : ' || DML);
DBMS_OUTPUT.PUT_LINE('BEGIN : ' || TO_CHAr(SYSDATE, 'YYYY/MM/DD HH24:MI:SS'));

LOOP

EXECUTE IMMEDIATE DML || ' AND ROWNUM <= :CNT' USING ONCE_COUNT;

IF SQL%NOTFOUND THEN
EXIT;
END IF;

DELETED_COUNT:= DELETED_COUNT + SQL%ROWCOUNT;

DBMS_OUTPUT.PUT_LINE(' DELETED ' || DELETED_COUNT || ' DATA.');
COMMIT;

END LOOP;

DBMS_OUTPUT.PUT_LINE('END : ' || TO_CHAr(SYSDATE, 'YYYY/MM/DD HH24:MI:SS'));

END BATCH_DELETE;
exec batch_delete('DELETE FROM TBL_AAAAA WHERe BBB_DT < ''20080901''', 10000);
全部回答
sql%rowcount就行。 其中的sql是oracle的内部游标,rowcount的意思是之前的dml sql语句影响的多少行数据。 如果是delete操作rowcount就是delete的数据,如果是insert,就是插入的数量...... 你可以在过程中加入这句去测试下: dbms_output.put_line(to_char(sql%rowcount)); 
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
世界最差的智能手机是多少钱
后悔买了一折浪琴
动量减少哦说明了什么
这发型如何啊,刚弄得
佛山市顺德区力震机械厂怎么去啊,有知道地址
现在的人怎么都这样 把钱借给别人 别有钱也不
一天中只吃切片面包,一共一袋,一周能瘦多少
宝成渔具地址在哪,我要去那里办事
广州天河区公司社保要增员,新人没有办过社保
一男一女在一个房间(酒店或者宾馆)里,他们
佛山尊恒门窗有限公司地址在什么地方,想过去
有什么方法锻炼下肢
二倍括号x-4=3倍括号x-12
广西贺州的火车路线有去福建和浙江的吗?
金牛农业生产资料有限公司地址有知道的么?有
推荐资讯
有什么好的宠物营养学书籍推荐一下吧。谢谢了
导光入射面,折射面,出光面,各要做什么处理
同心缘老莫NO.2地址有知道的么?有点事想过去
明都咸鸡店地址在什么地方,想过去办事
求下图中题目答案
美术学(师范)和美术学有什么区别
形容光线极其强烈的成语
高级单位的数作为小数的( )部分
QQ游戏大厅里的金币有什么作用?
梦见空空荡荡房子见到已经去世的人
我想知道丽水市区主要日用品批发市场有哪些?
X^(-2/3)写成分数形式是什么?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?