【发布时间】:2016-03-10 02:13:17
【问题描述】:
我被要求提供一种最佳方法来执行以下任务,
我们有一个从多个表中提取数据的视图,我们必须对这些提取的数据执行一些业务逻辑,然后将处理后的数据插入到另一个表中。这里的问题是视图非常复杂,执行时会提取 4000 万条记录,这本身就需要大量执行时间。但是在这么多记录中,我们必须对大约 2500 万条记录执行逻辑。
为此,我提出了一种方法,将这 2400 万条记录插入到全局临时表中,并在该临时表上执行所有业务逻辑,然后将处理后的数据插入到最终表中。
我请您建议这种方法是否适用于这些批量数据,或者我们仍然可以以更好的最佳 Oracle 概念执行此任务。在此之前我曾研究过 TSQL,而 PLSQL 对我来说是新的,因此任何建议都会非常有帮助。谢谢
【问题讨论】:
-
“业务逻辑”步骤是否过于复杂而无法使用简单的 SQL
insert ... select语句,没有任何 PL/SQL 或 GTT? -
没有@AlexPoole,其实业务逻辑并不复杂,我只是对大容量数据感到好奇。 GTT 能否高效处理 2500 万条数据??
-
你需要考虑 GTT 或收集方法的内存开销;只要逻辑不适用于多行,带有限制的集合(如托尼所示)就可以避免这是一个问题。普通 SQL 可能仍然更有效,但与很多事情一样,它取决于...
标签: oracle11g