The UNION operator is great for merging the results of multiple
queries that return similar rowsets, essentially executing each
query separately and merging the results together into a single
result set.
Oracle continues to improve the SQL optimizer with each new release
and Oracle has improved how Oracle handles
UNION ALL performance in
Oracle 11g release 2 with the new join factorization transformation
(JFT). The Join Factorization Transformation applies only to UNION
ALL queries.
The Oracle CBO Group gives
this example on how the optimizer now improves the performance
of UNION ALL by dynamically re-writing a UNION ALL query into a more
efficient form using an in-line view:
Q1:
select t1.c1, t2.c2
from t1, t2, t3
where
t1.c1 = t2.c1 and t1.c1 > 1 and t2.c2 = 2 and t2.c2 = t3.c2
union all
select t1.c1, t2.c2
from t1, t2, t4
where
t1.c1 = t2.c1 and t1.c1 > 1 and t2.c3 = t4.c3;
Table t1 appears in both the branches. As does the filter predicates
on t1 (t1.c1 > 1) and the join predicates involving t1 (t1.c1 =
t2.c1). Nevertheless, without any transformation, the scan (and the
filtering) on t1 has to be done twice, once per branch. Such a query
may benefit from join factorization which can transform Q1 into Q2
as follows:
Q2:
select
t1.c1, VW_JF_1.item_2
from t1, (select t2.c1 item_1,
t2.c2 item_2
from t2, t3
where t2.c2 = t3.c2 and t2.c2 = 2
union all
select t2.c1
item_1, t2.c2 item_2
from t2, t4
where t2.c3 = t4.c3) VW_JF_1
where
t1.c1 = VW_JF_1.item_1 and t1.c1 > 1;
In Q2, t1 is "factorized" and thus the table scan and the filtering
on t1 is done only once (it's shared). If t1 is large, then avoiding
one extra scan of t1 can lead to a huge performance improvement.
As we see the Join Factorization Transformation simply transforms
simple UNION ALL queries into in-line views, thereby avoiding an
extra full-table scan. Again, the Join Factorization Transformation
query re-write is complete transparent, and you do not need to do
anything at all to utilize this feature in Oracle 11gR2.
|
|
|
|
Guarantee your Success!
Oracle is the
world's most complex, robust and flexible database, considered
impossible to master without a mentor.
That's why all BC
Oracle trainers are working professionals, experts in Oracle who
share their tips and secrets. |
|
| |
|
Burleson is the American Team

Note:
This Oracle
documentation was created as a support and Oracle training reference for use by our
DBA performance tuning consulting professionals.
Feel free to ask questions on our
Oracle forum.
Verify
experience!
Anyone
considering using the services of an Oracle support expert should
independently investigate their credentials and experience, and not rely on
advertisements and self-proclaimed expertise. All legitimate Oracle experts
publish
their Oracle
qualifications.
Errata?
Oracle technology is changing and we
strive to update our BC Oracle support information. If you find an error
or have a suggestion for improving our content, we would appreciate your
feedback. Just
e-mail:
and include the URL for the page.
Copyright © 1996 - 2012
All rights reserved.
Oracle ©
is the registered trademark of Oracle Corporation.
|
|