Bạn có thể nhìn thấy nó theo cách xếp tầng. Tuy nhiên, điều quan trọng là tìm kiếm những bảng được nối bên trái và bên phải trong cùng một truy vấn. Trong trường hợp này, thứ tự sẽ khác:điều kiện nơi bảng được nối đúng được áp dụng trước. Tôi hy vọng sơ đồ sau sẽ làm sáng tỏ điều này:
Bạn cũng có thể kiểm tra thứ tự của các phép nối này bằng cách xem kế hoạch thực thi của truy vấn:
Đối với 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 | | | |
------------------------------------------------------------------------
Đối với quý 2:
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 | | | |
------------------------------------------------------------------------