orcl 如何快速删除表中百万或千万数据

摘要:
orcl数据库表中数据达到上千万时,已经变的特别慢了,所以时不时需要清掉一部分数据。而用truncate清除数据,内存中表空间中其被删除数据的表占用的空间会被立即释放,相当于windows中用shift+delete删除数据,不能够恢复!如果要删除表定义及其数据,请使用DROPTABLE语句。

orcl 数据库表中数据达到上千万时,已经变的特别慢了,所以时不时需要清掉一部分数据。

bqh8表中目前有10000000条数据,需要保留19条数据,其余全部清除掉。

以下为个人方法:

1、首先把需要保留的数据备份到temp1临时表中。

create table temp1 as select * from bqh8 where id<20;
select * from temp1;

orcl 如何快速删除表中百万或千万数据第1张

2、然后再用truncate删除整个表的数据。

truncate table bqh8;
select * from bqh8;

orcl 如何快速删除表中百万或千万数据第2张

3、最后再把temp1表中的数据复制到bqh8表中。

insert into bqh8 select * from temp1;

commit;
select * from bqh8;

orcl 如何快速删除表中百万或千万数据第3张

--------------------------------------------------------------------------------------------------

有人说删除数据尽量不要用truncate,但是truncate命令速度快,占用资源少,方面快捷,如果你确定表中数据完全可以删除的话可以用此命令。如果表中部分数据有用,那你最后备份好,否则一旦使用此命令,就呵呵了,当然你也可以用delete。但删除少量数据效率还行,若是几百万甚至几千万效率特别低,各有利有弊。根据实际情况而选。当然delete命令还是有好处的,如果不能保证此后的数据有不有用,但是当前不知道,或者干脆就是误删了,那么使用rollback命令直接回滚,当然rollback命令可以添加回滚点,定位回滚,恢复数据比较方便,所以说对与初学者,小柏强烈建议大家删除数据时使用delete命令,虽然效率低一点,但是加保险了,亲身经历,误用truncate命令清空了一个表,还好这个表是无关紧要的,否则我就只能呵呵受惩罚了。当然,强烈的建议是,做任何操作前,对于有用的数据都要事先备份,有备无患。

下面介绍一下truncate与delete的区别:

1、在功能上,truncate是清空一个表的内容,它相当于delete from table_name。

2、delete是dml操作,truncate是ddl操作;因此,用delete删除整个表的数据时,会产生大量的roolback,占用很多的rollback segments, 而truncate不会。

3、在内存中,用delete删除数据,表空间中其被删除数据的表占用的空间还在,便于以后的使用,另外它是“假相”的删除,相当于windows中用delete删除数据是把数据放到回收站中,还可以恢复,当然如果这个时候重新启动系统(OS或者RDBMS),它也就不能恢复了!

而用truncate清除数据,内存中表空间中其被删除数据的表占用的空间会被立即释放,相当于windows中用shift+delete删除数据,不能够恢复!

4、truncate 调整high water mark 而delete不;truncate之后,TABLE的HWM退回到 INITIAL和NEXT的位置(默认)delete 则不可以。

5、truncate 只能对TABLE,delete 可以是table,view,synonym。

6、TRUNCATE TABLE 的对象必须是本模式下的,或者有drop any table的权限 而 DELETE 则是对象必须是本模式下的,或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的权限。

7、在外层中,truncate或者delete后,其占用的空间都将释放。

8、truncate和delete只删除数据,而drop则删除整个表(结构和数据)。
-----------------------------------------------------------------------------------------------

TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。
如果想保留标识计数值,请改用 DELETE。
如果要删除表定义及其数据,请使用 DROP TABLE 语句。

免责声明:文章转载自《orcl 如何快速删除表中百万或千万数据》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ArcGIS10新体验之地图编辑codeforces C下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

人工智能将完成审计的前99步工作(修订)

https://zhuanlan.zhihu.com/p/21677391 0.利益无关 正因为我没有利益相关,所以才能写出不偏颇的观点。知乎上搜索人工智能+审计,无数人在问:德勤引入人工智能,对行业趋势有什么影响。无数审计师也在回答,不可能替代,即使是最激进的回答,也包括一个短期内不可替代。我认为这是一种自大,或者说对强大又不可知事物的惶恐。另一方面,如...

使用DBMS_STATS来收集统计信息【转】

overview Oracle's cost-based optimizer (COB) uses statistics to calculate the selectivity (the fraction of rows in a table that the SQL statement's predicate chooses) of predicate...

Spark在美团的实践

https://tech.meituan.com/2016/03/31/spark-in-meituan.html 本文已发表在《程序员》杂志2016年4月期。 前言 美团是数据驱动的互联网服务,用户每天在美团上的点击、浏览、下单支付行为都会产生海量的日志,这些日志数据将被汇总处理、分析、挖掘与学习,为美团的各种推荐、搜索系统甚至公司战略目标制定提供数据支...

HTML快速入门3

四、表格 (Table) 1.表格的基本形式 表由 <table> 开始, </table> 结束,表的内容由 <tr>,<th> 和 <td> 定义。 l<tr>说明表的一个行,表有多少行就有多少个 <tr> ; l<th>说明表的列数和相应栏目的名称(列标...

从mysql数据库删除重复记录只保留其中一条(保留id最小的一条)

准备工作:新建表tb_coupon /* Navicat Premium Data Transfer Source Server : root@localhost Source Server Type : MySQL Source Server Version : 50527 Source Host...

(4.40)sql server默认连接选项

一、SQLserver 默认连接选项 当我们连接sqlserver数据库时,我们发现Sqlserver Profiler 里面的Audit Login 事件: -- network protocol: TCP/IP 1    set quoted_identifieron 2    set arithabortoff 3    set numeric_ro...