Die Klammern ändern die Semantik nicht. Die Position des ON
-Klausel steuert die Reihenfolge der logischen Verarbeitung von Joins.
Erste Abfrage
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
Zweite Abfrage
(Überflüssige Klammern entfernt)
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
Also logisch in Ihrem ersten Beispiel der Join auf Transaction, Product
geschieht zuerst, dann wird der daraus resultierende virtuelle Tisch mit Customer
verknüpft , während in Ihrem zweiten Beispiel der Join auf Transaction, Customer
geschieht zuerst, dann wird der daraus resultierende virtuelle Tisch an Product
angefügt
Dies ist nur logisch, und da innere Verknüpfungen sowohl assoziativ als auch kommutativ sind, wird dies wahrscheinlich keinen Unterschied zum Ausführungsplan machen (es sei denn, Sie fügen OPTION (FORCE ORDER)
hinzu zur Abfrage), aber es kann für Outer Joins reichen.
Dies wird hier von Itzik Ben Gan behandelt aber der Artikel enthält eine Reihe von Ungenauigkeiten, siehe den Folgebrief von Lubor Kollar auch.