PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

L'ordine delle tabelle in un join è importante quando vengono utilizzati i join LEFT (esterni)?

È lo stesso ma è ambiguo da morire con l'implicito CROSS JIN. Usa JOINS espliciti.

Se ti unisci alla clausola WHERE, i risultati potrebbero differiscono perché join e filtri sono confusi.

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)

Note:

  • INNER JOINS e CROSS JOINS sono commutativi e associativi:l'ordine di solito non conta.
  • Gli OUTER JOIN non sono quelli che hai identificato
  • SQL è dichiarativo:dici all'ottimizzatore cosa vuoi, non come farlo. Questo rimuove le considerazioni sull'ordine JOIN (soggetto ai 2 articoli precedenti)