Для внутренних объединений я не заметил заметной разницы (но, как и во всех настройках производительности, вы должны проверить свою базу данных в ваших условиях).
Однако, где вы ставите условие имеет огромное значение, если вы используете левое или правое соединение. Например, рассмотрим эти два запроса:
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'
Первый даст вам только те записи, чей заказ датирован позднее 15 мая 2009 года, и, таким образом, преобразование левого объединения во внутреннее объединение.
Второй даст эти записи плюс любые клиенты без заказов. Набор результатов сильно отличается в зависимости от того, где вы поставили условие. (Выберите * только для примера, конечно, вы не должны использовать это в рабочем коде.)
Исключением является случай, когда вы хотите видеть только записи в одной таблице, но не в другой. Затем вы используете условие where для условия, а не для соединения.
SELECT *
FROM dbo.Customers AS CUS
LEFT JOIN dbo.Orders AS ORD
ON CUS.CustomerID = ORD.CustomerID
WHERE ORD.OrderID is null