SQL - 查询自连接而不执行两次

SQL - Query Self Join without executing it twice

我有一个 SQL 查询,由于它需要大量数据,因此需要很长时间才能执行(例如 30 分钟!)。

但是,我需要对这个结果做一些更多的事情——对这个查询进行自连接。

我无法在此数据库上创建临时 table。

我想要的是一种无需执行此查询两次即可执行此自连接的方法。

有没有一种方法可以编写主查询(可能使用 'WITH' 语法)以允许这样做?

编辑: 这是一个可行的示例:

With
MyQueryAlias1 AS
(30 minutes sql query here)

MyQueryAlias2 AS
(30 minutes sql query here)

SELECT
MyQueryAlias1.field1

FROM
MyQueryAlias1
JOIN MyQueryAlias2
ON MyQueryAlias1.field2 = MyQueryAlias2.field3

这只是一个示例,但它表明“30 分钟 sql 此处查询”将执行两次,这是我的问题。

您可以将查询简化为:

WITH MyQueryAlias1 AS (30 minutes sql query here)
SELECT q1.field1
FROM   MyQueryAlias1 q1
       JOIN MyQueryAlias1 q2
       ON q1.field2 = q2.field3

这将去掉第二个子查询分解子句。

这也可能有效:

WITH MyQueryAlias1 AS (30 minutes sql query here)
SELECT field1
FROM   MyQueryAlias1
WHERE  LEVEL = 1
AND    ( field2 = field3 OR CONNECT_BY_ISLEAF = 0 )
CONNECT BY NOCYCLE
       PRIOR field2 = field3
AND    LEVEL = 2;