2010-03-24 72 views
3

在我们的在oracle中生成大量报表的项目中,我们使用了一些永久表来保存中间结果。例如,为了生成一个报告,我们运行几个查询并填充表,在最后一步,我们将中间表与巨大的应用程序表连接起来。 这些中间表已被清除,用于下次报告运行。我们对性能领域的担忧很少。临时中间表

  1. 这些中间表是事务性的,没有统计数据。将这些应用程序分区并具有最新的统计信息,这是不错的主意。

  2. 我们需要这些存储在中间表中的结果在来自UI的请求中可用,因此我们无法使用oracle提供的临时表。

任何想法,可以做什么,将不胜感激。

回答

4

如果中间表达到一些相对一致的行数,您可以在填充(一次)填充过程后计算它们的统计数据,然后使用DBMS_STATS.LOCK_TABLE_STATS将这些值锁定到位。在表被截断并且下一次重新加载开始之后,行等的高估并不重要,但是当进程开始查询下一个周期的表时将会到位。