sql >> Databasteknik >  >> RDS >> PostgreSQL

Spelar ordningsföljden på tabellerna i en koppling någon roll när LEFT (yttre) kopplingar används?

Det är samma sak men det är tvetydigt som fan med det implicita KORS FÖRENAR. Använd explicita JOINS.

Om du går med i WHERE-satsen så kan resultaten skiljer sig eftersom kopplingar och filter blandas ihop.

SELECT ....
  FROM apples a
       JOIN
       bananas b ON ...
       JOIN 
       oranges o ON ...
       LEFT JOIN
       kiwis k ON k.orange_id = o.id
 WHERE (filters only)

Anmärkningar:

  • INNER JOINS och CROSS JOINS är kommutativa och associativa:ordning spelar vanligtvis ingen roll.
  • YTTRE JOINS är inte, vilket du identifierade
  • SQL är deklarativt:du berättar för optimeraren vad du vill ha, inte hur man gör det. Detta tar bort JOIN-orderöverväganden (med förbehåll för de två föregående artiklarna)


  1. NUMTOYMINTERVAL() Funktion i Oracle

  2. Granska dina sessionsinställningar med SESSIONPROPERTY() i SQL Server

  3. Tio sätt att ditt dataprojekt kommer att misslyckas på

  4. Hur man kan förutse och undkomma enstaka citat ' i oracle