我正在尝试做这样的事情:
SELECT * FROM
(SUBQUERY A) A
JOIN (SUBQUERY B) B
ON A.FIELD = B.FIELD
单独地,A运行非常快(大约5秒),B运行大约15-20秒。 但是当我尝试进行此连接时,只需几分钟即可运行。 我知道查询为A的每一行运行B.这些subquerys涉及非常大的表,但返回少量的寄存器。
我想知道一种强制A和B单独运行的方法,然后缓冲结果,最后只在结果中运行连接查询
谢谢!
答案 0 :(得分:0)
您可以使用with
子句 -
with a as ( subquery a),
b as (subquery B)
SELECT * FROM A JOIN B
ON A.FIELD = B.FIELD
答案 1 :(得分: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