我有一个包含50万行的表,我想删除所有行。
如果我执行简单的delete from tbl
,则事务日志会填满。我不关心交易这种情况,我不想在任何情况下回滚。我可以在许多交易中删除行,但有没有更好的方法呢?
如何有效地从DB2中的表中删除所有行?我可以以某种方式禁用此命令的事务,还是有特殊命令来执行此操作(如MySQL中的truncate)?
删除行后,我将使用相似数量的新数据重新填充数据库。
答案 0 :(得分:15)
似乎在较新版本的DB2中遵循命令works。
TRUNCATE TABLE someschema.sometable IMMEDIATE
答案 1 :(得分:7)
要在DB2中截断表,只需写:
alter table schema.table_name activate not logged initially with empty table
从我能够阅读的内容来看,这将删除表内容而不进行任何类型的日志记录,这将更加容易在服务器的I / O上进行。