Bene, "meglio" è soggettivo. C'è un po' di stile qui. Ma risponderò direttamente alle tue domande.
- Entrambi funzionano allo stesso modo
- Entrambi sono conformi all'ANSI.
-
Il problema con il primo esempio è che
-
è molto facile derivare inavvertitamente il prodotto incrociato (poiché è più facile tralasciare i criteri di unione)
-
diventa anche difficile eseguire il debug dei criteri di join quando aggiungi sempre più tabelle al join
-
poiché la sintassi del vecchio stile dell'external join (*=) è stata deprecata (è stato a lungo documentato che restituisce risultati errati), quando è necessario introdurre gli outer join, è necessario combinare il nuovo stile e il vecchio stile ... perché promuovere incoerenza?
-
sebbene non sia esattamente l'autorità sulle migliori pratiche, Microsoft consiglia la sintassi INNER/OUTER JOIN esplicita
-
con quest'ultimo metodo:
- stai usando una sintassi di join coerente indipendentemente da inner / external
- è più difficile (non impossibile) derivare accidentalmente il prodotto incrociato
- l'isolamento dei criteri di unione dai criteri di filtro può semplificare il debug
-
Ho scritto il post indicato da Kevin.