Fondamentalmente, la differenza tra i due è che uno è scritto alla vecchia maniera, mentre l'altro è scritto alla maniera moderna. Personalmente, preferisco la sceneggiatura moderna usando le definizioni interne, sinistra, esterna, destra perché sono più esplicative e rendono il codice più leggibile.
Quando si ha a che fare con i join interni non vi è alcuna reale differenza nella leggibilità, tuttavia, può risultare complicato quando si gestiscono i join left e right come nel metodo precedente si otterrebbe qualcosa del genere:
SELECT *
FROM table a, table b
WHERE a.id = b.id (+);
Quanto sopra è il vecchio modo in cui viene scritto un join sinistro in contrapposizione al seguente:
SELECT *
FROM table a
LEFT JOIN table b ON a.id = b.id;
Come puoi vedere visivamente, il modo moderno di come viene scritto lo script rende la query più leggibile. (A proposito, lo stesso vale per i giunti giusti e un po 'più complicato per i giunti esterni).
Tornando alla piastra della caldaia, non fa differenza per il compilatore SQL il modo in cui viene scritta la query in quanto li gestisce allo stesso modo. Ho visto un mix di entrambi nei database Oracle che hanno coinvolto molte persone, sia i più vecchi che i più giovani. Ancora una volta, si riduce a quanto sia leggibile la sceneggiatura e il team con cui stai sviluppando.