¿Hay alguna diferencia (rendimiento, mejores prácticas, etc.) entre poner una condición en la cláusula JOIN contra la cláusula WHERE?Condición dentro de JOIN o DONDE
Por ejemplo ...
-- Condition in JOIN
SELECT *
FROM dbo.Customers AS CUS
INNER JOIN dbo.Orders AS ORD
ON CUS.CustomerID = ORD.CustomerID
AND CUS.FirstName = 'John'
-- Condition in WHERE
SELECT *
FROM dbo.Customers AS CUS
INNER JOIN dbo.Orders AS ORD
ON CUS.CustomerID = ORD.CustomerID
WHERE CUS.FirstName = 'John'
¿Qué prefieres (y tal vez por eso)?
¿Has ejecutado las dos consultas? ¿Revisó los planes de ejecución generados por las dos consultas? ¿Qué observaste? –
@ S.Lott, esta consulta es solo para fines ilustrativos. Me pregunto "en general", que es el método preferido, si es que hay alguno. –
@Steve Dignan: Debe comparar esto con datos de muestra y observar los planes de consulta. La respuesta será muy, muy clara. Y, como beneficio adicional, tendrá una pieza de código que podrá reutilizar cuando surjan situaciones más complejas. –