Para las uniones internas, realmente no he notado una diferencia (pero como con todos los ajustes de rendimiento, debe verificar su base de datos bajo sus condiciones).
Sin embargo, donde coloca la condición hace una gran diferencia si está utilizando uniones izquierdas o derechas. Por ejemplo, considere estas dos consultas:
SELECT *
FROM dbo.Customers AS CUS
LEFT JOIN dbo.Orders AS ORD
ON CUS.CustomerID = ORD.CustomerID
WHERE ORD.OrderDate >'20090515'
SELECT *
FROM dbo.Customers AS CUS
LEFT JOIN dbo.Orders AS ORD
ON CUS.CustomerID = ORD.CustomerID
AND ORD.OrderDate >'20090515'
El primero le dará solo aquellos registros que tengan un pedido con fecha posterior al 15 de mayo de 2009, lo que convierte la unión izquierda en una unión interna.
El segundo dará esos registros más cualquier cliente sin pedidos. El conjunto de resultados es muy diferente dependiendo de dónde coloque la condición. (Seleccionar * es solo para fines de ejemplo, por supuesto, no debe usar esto en el código de producción).
La excepción a esto es cuando desea ver solo los registros en una tabla pero no en la otra. Luego usa la cláusula where para la condición, no la unión.
SELECT *
FROM dbo.Customers AS CUS
LEFT JOIN dbo.Orders AS ORD
ON CUS.CustomerID = ORD.CustomerID
WHERE ORD.OrderID is null