请教一个关于循环的问题,删除数据
我有一张有数千万数据的大表,现在想删掉一些没用的历史数据,如果用常规删法的话,会很慢,如:
delete from table_a t where t.id<5000000;
我的表有5个字段,其中id有索引。
删了两个小时,也没有完成。
考虑了一下,想用一个过程,让服务器自己空闲的时候,自己去删:
create or replace procedure self_procedure is
begin
for v in 4805000000 .. 4810000000 loop
delete from SYS2SYN_DATA_DETAIL t where t.master_id = v;
commit;
end loop;
end;
这样没似乎可以实现,但是每次只删除一条,不知道会删到什么时候,而且磁盘操作似乎有些频繁。
于是想一次多删除一些:
create or replace procedure self_procedure_muti is
begin
for v in 4805000000 .. 4810000000 loop
delete from SYS2SYN_DATA_DETAIL t where t.master_id < v;
v:=v+1000;
commit;
end loop;
end;
可是这个过程报错了,“表达式v不能用作赋值目标”。
请问,各位有什么好的办法没有?
delete from table_a t where t.id<5000000;
我的表有5个字段,其中id有索引。
删了两个小时,也没有完成。
考虑了一下,想用一个过程,让服务器自己空闲的时候,自己去删:
create or replace procedure self_procedure is
begin
for v in 4805000000 .. 4810000000 loop
delete from SYS2SYN_DATA_DETAIL t where t.master_id = v;
commit;
end loop;
end;
这样没似乎可以实现,但是每次只删除一条,不知道会删到什么时候,而且磁盘操作似乎有些频繁。
于是想一次多删除一些:
create or replace procedure self_procedure_muti is
begin
for v in 4805000000 .. 4810000000 loop
delete from SYS2SYN_DATA_DETAIL t where t.master_id < v;
v:=v+1000;
commit;
end loop;
end;
可是这个过程报错了,“表达式v不能用作赋值目标”。
请问,各位有什么好的办法没有?
...全文
相关推荐
java中循环删除list中元素的方法总结
(i); } } ``` 这种方法存在的问题是,当你删除一个元素后,列表的大小会减小,但循环的索引仍然在增加。
JavaScript中关于for循环删除数组元素内容时出现的问题
本文将详细探讨在使用for循环删除数组元素时可能会遇到的问题,并提供解决方案。在上文提到的代码例子中,创建了一个含有重复元素的数组var arr=[1,1,1,2,2];。
解决JAVA遍历List集合,删除数据时出现的问题
解决方法解决JAVA遍历List集合时删除数据出现的问题有多种方法,下面我们将对这些方法进行详细的讲解:解决方法1:每移过一次后,再把 i 移回来在遍历List集合时,我们可以使用for循环来删除元素,
yuesefu.rar_创建一个循环链表_按指定位置删除_循环单链表_约瑟夫环
在计算机科学领域,数据结构是基础且至关重要的概念,它为高效地存储和处理数据提供了方法。循环链表是其中一种特殊类型的数据结构,而约瑟夫环问题则是基于这种数据结构的一个经典算法问题。
Python中list循环遍历删除数据的正确方法
在初学Python时,可能会遇到这样的问题:当我们试图在遍历list的过程中删除符合条件的数据项时,代码运行会报错,因为list的索引在删除元素后发生了变化,导致程序尝试访问一个已经不存在的索引位置。


