我在迭代中处理大量数据,每次迭代过程大约10-50 000条记录。由于记录数量如此之多,我首先将它们插入到全局临时表中,然后对其进行处理。通常,每次迭代需要5-10秒。
在每次迭代后截断全局临时表是否明智,以便每次迭代都可以从空表开始?大约有5000次迭代。
答案 0 :(得分:6)
没有!全局临时表的整体思想是,当您不再需要时,数据会自动消失。
例如,如果您希望在COMMIT时数据消失,则应在最初创建表时使用ON COMMIT DELETE ROWS选项。
这样,您不需要执行TRUNCATE - 您只需执行COMMIT,并且表格全部都是空的并且已准备好重复使用。
答案 1 :(得分:0)
每次运行50000条记录5000次迭代?如果您需要进行那么多处理,那么您肯定可以优化处理逻辑以更有效地运行。与截断表相比,这可以提供更快的速度。
但是,如果您已完成临时表中的数据,则应截断它,或者只是确保使用该表的下一个进程不会再次重新处理相同的数据。
E.g。有一个'已处理'标志,因此新进程不使用现有数据。 要么 不再需要时删除数据。