Os parênteses não alteram a semântica. A posição do
ON cláusula controla a ordem do processamento lógico de junções. Primeira consulta
SELECT Customer.Name,
Product.Desc,
Transaction.Date
FROM Product
INNER JOIN Transaction
ON Transaction.ProductID = Product.ID
INNER JOIN Customer
ON Transaction.CustomerID = Customer.ID
Segunda consulta
(Parênteses redundantes removidos)
SELECT Customer.Name,
Product.Desc,
Transaction.Date
FROM Product
INNER JOIN Transaction
INNER JOIN Customer
ON Transaction.CustomerID = Customer.ID
ON Transaction.ProductID = Product.ID
Então logicamente em seu primeiro exemplo, a junção em
Transaction, Product acontece primeiro, então a tabela virtual resultante disso é unida ao Customer , enquanto no seu segundo exemplo a junção em Transaction, Customer acontece primeiro, então a tabela virtual resultante disso é unida ao Product Isso é apenas logicamente e como as junções internas são associativas e comutativas, isso provavelmente não fará diferença no plano de execução (a menos que você adicione
OPTION (FORCE ORDER) para a consulta), mas pode fazer para junções externas. Este é coberto por Itzik Ben Gan aqui mas o artigo tem várias imprecisões, veja a carta de acompanhamento de Lubor Kollar também.