删除数据-大表根据rowid来删除部分数据

Posted lwq9614

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除数据-大表根据rowid来删除部分数据相关的知识,希望对你有一定的参考价值。

偶遇需求,大表中需要删除部分数据。分批删除。

 

declare
TYPE type_table_rowid IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
table_rowid type_table_rowid;
CURSOR cur_tmp IS
select rowid from test t where id=‘111111‘ or uin=‘222222‘; --------需要删除的数据的rowid获取
BEGIN
OPEN cur_tmp;
LOOP
FETCH cur_tmp BULK COLLECT
INTO table_rowid LIMIT 5000;
FORALL i IN 1 .. table_rowid.COUNT()
delete from test where ROWID = table_rowid(i);
COMMIT;
EXIT WHEN cur_tmp%NOTFOUND;
END LOOP;
COMMIT;
CLOSE cur_tmp;
END;
/

 

以上是关于删除数据-大表根据rowid来删除部分数据的主要内容,如果未能解决你的问题,请参考以下文章

cmds系统数据库源端大表数据更新优化

从 SQL Server 中的大表中删除大部分数据的策略

Oracle查询及删除重复数据

oracle 查找删除重复数据

删除表里重复数据

Oracle 删除重复数据只留一条