|
我的测试结果肯楼主有点出入.oracle version:11.2.0.4.0
测试结果为: 谓词的推入主要依据与CBO引擎,不区分Union与Union all都可以进行谓词推入.即:
SELECT *
FROM T1 ,T2 ,
(SELECT T3.a, T3.b
FROM T3
UNION ALL --或者UNION都发生推入
SELECT T4.a, T4.b
FROM T4
) V
WHERE T1.a = V.a
AND T2.c = V.b
但一有点需要注意的是谓词推入在其中的联合查询同时存在子查询或内联的情况就会失效.即:
SELECT *
FROM T1 ,T2 ,
(SELECT T3.a, T3.b
FROM T3
UNION ALL
SELECT T3.a, T4.b
FROM T4,T3
WHERE T3.a = T4.a
) V
WHERE T1.a = V.a
AND T2.c = V.b
|
|