java_Oralce
简单范例
create or replace procedure delete_table
is
i number(10);
begin
for x in (select * from emp where DEPTNO like 'a%')
loop
delete emp where emp.id = x.id
i:=i+1;
if i>1000 then
commit;
i:=0;
end if;
end loop;
exception
when others then
dbms_out.put_line(sqlcode);
rollback;
end delete_table;
Oracle中删除超过50w条记录的数据,如果直接使用delete,效率就严重受到了影响。那么首先我们需要了解对于这个表的数据,我们到底是全部删除,还是部分删除。这里有三个关键字我们需要注意:truncate,delete,drop,他们之间的异同点可以参考这篇文章——truncate,delete,drop的异同点。
全部删除,不保留数据结构就直接drop最好。如果是部分删除,一般就这样一些办法:
1. 如果删除的数据是大部分,分段提交删除的数据。
| create or replace procedure delete_table is i number(10); begin for x in (select * from emp where DEPTNO like ‘a%’) loop delete emp where emp.id = x.id i:=i+1; if i>1000 then commit; i:=0; end if; end loop; exception when others then dbms_out.put_line(sqlcode); rollback; end delete_table; |
或者
|
–每500条数据提交一次 |
2、把要保留的数据放在一个临时表里,truncate table原表后再放回来;
| create table t_back as select * from t where …. drop table t; rename t_back to t; |
3. 专门使用一个大回滚段 ,比如定义:undo tablespace 2G
4、如果将方法1做一点修改,可以这么做:
|
有条件的分步删除数据表中的记录 –创建测试表 –创建删除表的存储过程 –插入语句 –执行语句 |
java_Oralce的更多相关文章
随机推荐
- C#相关图书推荐
C#入门经典(第6版) 作 者 [美] Karli Watson,Jacob Vibe Hammer,Jon D Reid 等 著: 出 版 社 清华大学出版社 出版时间 2014-01-0 ...
- vi--文本编辑常用快捷键之光标移动
再来一发! 上一篇关于vi/vim的文章中,主要介绍了文本的复制粘贴删除替换等操作,在慢慢的适应vim的过程中,我发现有很多时间实际上是浪费在移动光标上的,特别是行内移动光标.这篇文章就主要是介绍vi ...
- HDU5734:Acperience(方差)
题意: 给出n个数xi,确定一个值α,使得Σ(xi-α)^2的值最小. 分析: 可以猜想是方差,不懂得可以去方差了解一下. 那么α即为∑(xi)/n,然后要注意的是转化为分数,首先我们不能用小数转分数 ...
- SRM 501 DIV1 500pt(DP)
题目简述 给定一个长度为n的序列,每个数值的范围为[-1,40],-1可以替换成0~40之间的数,要求你求出符合以下条件的序列有多少个? 1.每个数都是0~40之间的数 2.对于每一个数A[i],都需 ...
- c# socket编程简单例子
服务器端代码 using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Thr ...
- codeforces 630 I(规律&&组合)
I - Parking Lot Time Limit:500MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Subm ...
- 面试之BI-SQL--table转换
题目如下: Num 1 2 4 6 7 8 10 11 13 写条SQL语句转成下表: Column1 Column2 1 2 4 4 6 ...
- HDU 4462 Scaring the Birds (暴力求解,二进制法)
题意:给定一个 n*n的矩阵,在一些位置放上稻草人,每个稻草人的范围是一定,问你最少几个能覆盖整个矩阵. 析:稻草人最多才10个,所以考虑暴力,然后利用二进制法,很容易求解,并且时间很少0ms,注意有 ...
- oracle对序列的操作
select t.*, t.rowid from tbl_type t order by t.id desc Select SEQ_TBL_TYPE_ID.NextVal From Dual; ; ; ...
- Date String转换
这种转换要用到java.text.SimpleDateFormat类 字符串转换成日期类型: 方法1: 也是最简单的方法 Date date=new Date("2008-04-14&quo ...