【问题标题】:Temporary intermediate table临时中间表
【发布时间】:2010-03-25 16:40:55
【问题描述】:

在我们在 oracle 中生成大量报告的项目中,我们使用一些永久表来保存中间结果。例如,为了生成一份报告,我们运行少量查询并填充表,在最后一步,我们将中间表与巨大的应用程序表连接起来。 这些中间表被清除以供下次报告运行。我们在性能方面几乎没有顾虑。

  1. 这些中间表是事务性的,没有统计信息。将这些与已分区并具有最新统计信息的应用程序表连接起来是否是个好主意。

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

任何关于可以做什么的想法将不胜感激。

【问题讨论】:

    标签: sql oracle performance


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您还可以查看动态采样(9i 及更高版本),请参阅以下链接

      Ask Tom Magazine Article

      See Section on -Query Plans with Temporary Tables

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-20
        相关资源
        最近更新 更多