如何高效地从DB2中的表中删除所有行

问题描述:

我有一个类似于50万行的表,并且想要删除所有行。如何高效地从DB2中的表中删除所有行

如果我做简单delete from tbl,事务日志填满。我不在乎交易这种情况,我不想在任何情况下回滚。我可以在许多交易中删除行,但有没有更好的方法呢?

如何高效地从DB2中的表中删除所有行?我能否以某种方式禁用此命令的事务,或者是否有特殊的命令来执行此操作(如MySQL中的truncate)?

在我删除了行之后,我将用类似数量的新数据重新填充数据库。

在较新版本的DB2中似乎遵循以下命令works

TRUNCATE TABLE someschema.sometable IMMEDIATE 

要截断在DB2表,简单的写:

alter table schema.table_name activate not logged initially with empty table 

从我能读,这将删除该表的内容没有做任何记录的该会更容易在你的服务器的I/O。

+1

由于缺少日志记录,这可能无法在复制/ hadr环境中使用。 – 2010-09-07 08:29:59

+1

对于那些需要在没有TRUNCATE TABLE语句的DB2版本上清除表的人,这是一个非常有用的答案。 – 2014-04-14 16:16:26