Sql 如何在DB2中有效地从表中删除所有行

Sql 如何在DB2中有效地从表中删除所有行,sql,performance,db2,Sql,Performance,Db2,我有一个大约有50万行的表,我想删除所有行 如果我从tbl执行简单的删除操作,事务日志将被填满。我不关心这种情况下的事务,我不想在任何情况下回滚。我可以删除许多事务中的行,但是有更好的方法吗 如何在DB2中高效地从表中删除所有行?我是否可以以某种方式禁用此命令的事务,或者是否有专门的命令来执行此操作(如在MySQL中) 删除行后,我将使用相同数量的新数据重新填充数据库。要截断DB2中的表,只需编写: alter table schema.table_name activate not logge

我有一个大约有50万行的表,我想删除所有行

如果我从tbl执行简单的
删除操作
,事务日志将被填满。我不关心这种情况下的事务,我不想在任何情况下回滚。我可以删除许多事务中的行,但是有更好的方法吗

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


删除行后,我将使用相同数量的新数据重新填充数据库。

要截断DB2中的表,只需编写:

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

据我所知,这将删除表内容,而无需进行任何类型的日志记录,这将在服务器的I/O上变得更加容易。

在较新版本的DB2中,下面的命令似乎很有用

TRUNCATE TABLE someschema.sometable IMMEDIATE  

由于缺少日志记录,这在复制/hadr环境中可能不起作用。对于那些需要在没有TRUNCATE table语句的DB2版本上清除表的人来说,这是一个非常有用的答案。请记住,trancate只能用于外键未引用的表。链接文章展示了一种甚至清空这些表的替代方法,方法是将dev null加载到表中,并调用ADMIN\u CMD('LOAD FROM/dev/null of del REPLACE into someschema.sometable NONRECOVERABLE')。不可恢复用于避免将表设置为备份挂起状态