0

我正在尝试做这样的事情:

SELECT * FROM 
(SUBQUERY A) A 
JOIN (SUBQUERY B) B 
ON A.FIELD = B.FIELD

单独来说,A 跑得非常快(大约 5 秒),B 跑大约 15 -20 秒。但是当我尝试进行此连接时,只需几分钟即可运行。我知道查询为 A 的每一行运行 B。这些子查询涉及非常大的表,但返回少量寄存器。

我想知道一种强制A和B单独运行,然后缓冲结果,最后只在结果中运行连接查询的方法

谢谢!

4

2 回答 2

0

你可以使用with子句 -

with a as ( subquery a),
b as (subquery B)
SELECT * FROM  A JOIN B 
ON A.FIELD = B.FIELD
于 2013-05-22T17:26:59.523 回答
0

您可以使用 NO_MERGE 提示获得所需的信息:

SELECT * FROM 
(SELECT /*+NO_MERGE*/ ... FROM SUBQUERY A) A 
JOIN (SELECT /*+NO_MERGE*/ ... FROM SUBQUERY B) B 
ON A.FIELD = B.FIELD
于 2013-05-23T02:46:37.873 回答