Możesz to zobaczyć w sposób kaskadowy. Kluczem jest jednak wyszukanie tych tabel, które są połączone z lewej i prawej strony w ramach tego samego zapytania. W tym przypadku kolejność jest inna:warunek, w którym tabela jest połączona w prawo, jest stosowany jako pierwszy. Mam nadzieję, że poniższy diagram rzuci trochę światła na to:
Możesz również sprawdzić kolejność tych złączeń, patrząc na plan wykonania zapytania:
Dla Q1:
select a.c a, b.c b, c.c c from a, b, c where a.c = b.c (+) and
c.c = a.c (+)
------------------------------------------------------------------------
| Id | Operation | Name | E-Rows | OMem | 1Mem | Used-Mem |
------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | | |
|* 1 | HASH JOIN OUTER | | 4 | 2168K| 2168K| 805K (0)|
|* 2 | HASH JOIN OUTER | | 4 | 2616K| 2616K| 981K (0)|
| 3 | TABLE ACCESS FULL| C | 4 | | | |
| 4 | TABLE ACCESS FULL| A | 4 | | | |
| 5 | TABLE ACCESS FULL | B | 4 | | | |
------------------------------------------------------------------------
Dla Q2:
select a.c a, b.c b, c.c c from a, b, c where c.c = a.c (+) and
a.c = b.c (+)
------------------------------------------------------------------------
| Id | Operation | Name | E-Rows | OMem | 1Mem | Used-Mem |
------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | | |
|* 1 | HASH JOIN OUTER | | 4 | 2168K| 2168K| 801K (0)|
|* 2 | HASH JOIN OUTER | | 4 | 2616K| 2616K| 983K (0)|
| 3 | TABLE ACCESS FULL| C | 4 | | | |
| 4 | TABLE ACCESS FULL| A | 4 | | | |
| 5 | TABLE ACCESS FULL | B | 4 | | | |
------------------------------------------------------------------------