El filtrado se une únicamente al uso de DONDE puede ser extremadamente ineficiente en algunos escenarios comunes.Por ejemplo:
SELECT * FROM people p, companies c WHERE p.companyID = c.id AND p.firstName = 'Daniel'
La mayoría de las bases de datos se ejecute esta consulta, literalmente, tomando primero el producto cartesiano de las personas y empresas tablas y luego filtrado por los que tienen campos y CompanyID ID coincidente. Si bien el producto no restringido no existe en ningún lugar sino en la memoria y solo por un momento, su cálculo lleva algún tiempo.
Un mejor enfoque es agrupar las restricciones con las UNIONES cuando sea relevante. Esto no solo es subjetivamente más fácil de leer sino también mucho más eficiente. De esta manera:
SELECT * FROM people p JOIN companies c ON p.companyID = c.id
WHERE p.firstName = 'Daniel'
Es un poco más largo, pero la base de datos es capaz de mirar a la cláusula ON y utilizarla para calcular el totalmente restringido a unirse directamente, en lugar de comenzar con todo y luego limitar hacia abajo. Esto es más rápido de calcular (especialmente con grandes conjuntos de datos y/o combinaciones de varias tablas) y requiere menos memoria.
Cambio cada consulta que veo que usa la sintaxis "coma unir". En mi opinión, el único propósito de su existencia es la concisión. Teniendo en cuenta el impacto en el rendimiento, no creo que esta sea una razón convincente.
De acuerdo, el primero es mejor para la claridad y el control; es más fácil cambiar el tipo de unión si lo desea. –