Zasadniczo różnica między nimi polega na tym, że jedno jest napisane w stary sposób, a drugie w nowoczesny sposób. Osobiście wolę nowoczesny skrypt wykorzystujący definicje wewnętrzne, lewe, zewnętrzne, prawe, ponieważ są one bardziej objaśniające i sprawiają, że kod jest bardziej czytelny.
W przypadku złączeń wewnętrznych nie ma też żadnej rzeczywistej różnicy w czytelności, jednak może się to komplikować w przypadku złączeń lewej i prawej, ponieważ w starszej metodzie można uzyskać coś takiego:
SELECT *
FROM table a, table b
WHERE a.id = b.id (+);
Powyżej jest stary sposób, w jaki zapisywane jest lewe złączenie, w przeciwieństwie do następujących:
SELECT *
FROM table a
LEFT JOIN table b ON a.id = b.id;
Jak widać wizualnie, nowoczesny sposób pisania skryptu sprawia, że zapytanie jest bardziej czytelne. (Nawiasem mówiąc, to samo dotyczy prawych złączeń i nieco bardziej skomplikowane w przypadku złączeń zewnętrznych).
Wracając do płyty kotła, nie ma znaczenia dla kompilatora SQL, w jaki sposób zapytanie jest pisane, ponieważ obsługuje je w ten sam sposób. Widziałem mieszankę obu w bazach danych Oracle, w których zapisywało się wiele osób, zarówno starszych, jak i młodszych. Ponownie sprowadza się to do czytelności skryptu i zespołu, z którym się rozwijasz.