db2中删除数据的几种方法

大家对如何删除数据都不陌生,我们习惯性的这么写:

DELETE FROM <TABLE_NAME> WHERE <CONDITION>;

其实这么写性能并不好,尤其是删除大量数据的时候,要想获得更好的性能,可以采用如下方式:

DELETE FROM
(
SELECT * FROM <TABLE_NAME> WHERE <CONDITION>
);

那如果要把一个表的所有数据都删除了,该怎么办?有人可能会说,这简单啊,把WHERE子句去掉不就可以了。回答正确,这是一种方法。当数据量很大时,删除数据需要很长时间,有人可能会采用先DROP TABLE,然后CREATE TABLE的方式,这是第二种方法。这样处理虽然很快,但是比较麻烦。其实还有第三种方法,更快、更简单,如下:
ALTER TABLE <TABLE_NAME> ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE


郑重申明,使用以上语句后,对表的操作将不会记录日志,恢复的时候可能有问题,所以特别适合临时表。以上语句要慎重使用,出现任何后果本人概不负责。当然,还有其他方法,但那不是SQL了,是DB2的命令,我们这里就不介绍了。


3. 使用 IMPORT 或 LOAD 命令,即:

IMPORT FROM /dev/null OF DEL REPLACE INTO <表名> --(Unix 系统)
或 IMPORT FROM <空文件> OF DEL REPLACE INTO <表名>

LOAD FROM /dev/null OF DEL REPLACE INTO <表名> NONRECOVERABLE --(Unix 系统)

或 LOAD FROM <空文件> OF DEL REPLACE INTO <表名> NONRECOVERABLE

在这一方法中,REPLACE 导入方式首先会将表中所有数据清空,然后 IMPORT/LOAD 又向表中导入了空数据,从而实现了数据的清除操作。


  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值