代码之家  ›  专栏  ›  技术社区  ›  thecoop

如何在子查询分解的临时表上创建索引?

  •  2
  • thecoop  · 技术社区  · 16 年前

    我有一个查询,上面有一个子查询的WITH语句,然后在子查询上运行几个CONNECT BY。子查询可以包含数以万计的行,并且对connectby层次结构的深度没有限制。目前,这个查询需要30秒以上;是否可以指定要放在为分解子查询创建的临时表上的索引,以加快CONNECT BYs的速度,或者以另一种方式加快它的速度?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Quassnoi    16 年前

    在查询中没有正确的方法: Oracle 不支持 Eager Spool .

    您可以将结果集临时存储在索引的临时表中,并发出 CONNECT BY

    但是,对于查询中不可组织的相等条件 连接方式 通常建立一个哈希表,在大多数情况下甚至比索引更好。

        2
  •  2
  •   Adam Musch    16 年前

    你也许可以使用 MATERIALIZE

    Jonathan Lewis' blog 有几个例子说明如何使用它。但是,由于提示的未记录性质,存在一些风险。