sql >> Databasteknik >  >> RDS >> Oracle

Oracle-syntax vänster sammanfogar tre eller fler tabeller

Du kan se det på ett överlappande sätt. Nyckeln är dock att leta efter de tabeller som är vänster och höger sammanfogade inom samma fråga. I det här fallet är ordningen annorlunda:villkoret där tabellen är rätt sammanfogad tillämpas först. Jag hoppas att följande diagram kommer att kasta lite ljus över detta:

Du kan också kontrollera ordningen på dessa kopplingar genom att titta på exekveringsplanen för frågan:

För 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 |       |       |          |
------------------------------------------------------------------------

För 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 |       |       |          |
------------------------------------------------------------------------


  1. Hibernate optimistisk låsning olika beteende mellan Postgres och MariaDb

  2. Utvecklingen och framtiden för Microsoft Access

  3. mysql antal rader per timme

  4. Hur kan man undkomma? (frågetecken) operatör för att fråga Postgresql JSONB-typ i Rails