Oracle - 截断全局临时表

3

我正在进行大量数据的迭代处理,每个迭代处理约10-50,000条记录。由于记录数量如此之多,我首先将它们插入到全局临时表中,然后再进行处理。通常,每个迭代需要5-10秒。

是否明智在每个迭代之后截断全局临时表,以便每个迭代都可以从空表开始?总共有约5000个迭代。

2个回答

6
不行!全局临时表的整个概念就是当你不再需要数据时,它会自动消失。
例如,如果您希望在提交时数据消失,则应在最初创建表时使用ON COMMIT DELETE ROWS选项。
这样,您就不需要执行TRUNCATE操作 - 只需提交,表格就会变得新鲜、空白并准备好被重用。

0

每次运行处理50000条记录需要进行5000次迭代?如果您需要进行这么多的处理,那么肯定可以优化处理逻辑以使其更高效地运行。这将使您比截断表更快。

然而,如果您已经完成了临时表中的数据,应该将其截断,或者确保下一个使用该表的进程不会重新处理相同的数据。

例如,设置一个“已处理”标志,以便新进程不使用现有数据。 或者 在不再需要时删除数据。


1
Dario正在询问一个全局临时表,这不仅是一个普通的临时表,而是Oracle DB中的一种特定类型的表。 - vadipp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接