Oracle 如何将视图转储到表中,使其不必重新计算

Oracle 如何将视图转储到表中,使其不必重新计算,oracle,caching,sql-view,Oracle,Caching,Sql View,我有一个非常复杂的观点,这是代码遗留部分的遗留问题。我们对改变这个观点不感兴趣,尽管它有一些小错误,因为它太混乱了。但是我们没有足够的时间来重写它。因此,我们需要在不修改它的情况下提高其性能 我要做的是有一个批处理作业,它有一个具有相同列的表,并且偶尔会清除该表中的数据,并将视图中的每一行插入该表中。因此,即使计算整个视图需要5分钟,我们每天只需执行一次,或者如果他们真的希望报告准确,并等待它重新计算,客户端可以重新触发批处理作业 我认为有几种不同的方法可以做到这一点,但它们似乎很幼稚,相当老练

我有一个非常复杂的观点,这是代码遗留部分的遗留问题。我们对改变这个观点不感兴趣,尽管它有一些小错误,因为它太混乱了。但是我们没有足够的时间来重写它。因此,我们需要在不修改它的情况下提高其性能

我要做的是有一个批处理作业,它有一个具有相同列的表,并且偶尔会清除该表中的数据,并将视图中的每一行插入该表中。因此,即使计算整个视图需要5分钟,我们每天只需执行一次,或者如果他们真的希望报告准确,并等待它重新计算,客户端可以重新触发批处理作业


我认为有几种不同的方法可以做到这一点,但它们似乎很幼稚,相当老练。是否有一种“标准”的方式来完成我没有找到的任务?

您所描述的已经存在于Oracle中,它被称为物化视图:感谢您的链接,Tony。我现在正在调查它,但我没有找到允许它访问陈旧数据的开关。我需要能够在数据处于陈旧状态时访问该数据,并且仅每隔几个小时重建物化视图。@corsiKa默认情况下,物化视图具有陈旧数据。启用增量或快速刷新可能非常困难,如果您不想使用该功能,您会很幸运。物化视图既可以计划重建,也可以临时重建。