我在迭代中处理大量数据,每次迭代处理大约10-50,000条记录。由于有如此多的记录,我首先将它们插入到一个全局临时表中,然后对其进行处理。通常,每次迭代需要5-10秒。
在每次迭代后截断全局临时表,以便每次迭代都可以从空表开始,这样做是否明智?大约有5000次迭代。
发布于 2010-04-29 08:49:21
不是的!全局临时表的整体思想是,当您不再需要数据时,它会自动消失。
例如,如果希望数据在提交时消失,则应该在最初创建表时使用ON COMMIT DELETE ROWS选项。
这样,您就不需要执行截断操作--只需提交,表就会变得新鲜、空闲,可以重用。
发布于 2010-04-29 07:45:26
每次运行50000条记录进行5,000次迭代?如果你需要做这么多的处理,你当然可以优化你的处理逻辑来更有效地运行。与截断表相比,这将为您提供更快的速度。
但是,如果您处理完了临时表中的数据,则应该截断它,或者只是确保使用该表的下一个进程不会再次重新处理相同的数据。
例如,有一个'processed‘标志,所以新的进程不使用现有的数据。或者在不再需要时删除数据。
https://stackoverflow.com/questions/2733709
复制相似问题