По отношение на производителността те са еднакви (и произвеждат едни и същи планове)
Логично трябва да направите операцията, която все още има смисъл, ако замените INNER JOIN
с LEFT JOIN
.
Във вашия случай това ще изглежда така:
SELECT *
FROM TableA a
LEFT JOIN
TableXRef x
ON x.TableAID = a.ID
AND a.ID = 1
LEFT JOIN
TableB b
ON x.TableBID = b.ID
или това:
SELECT *
FROM TableA a
LEFT JOIN
TableXRef x
ON x.TableAID = a.ID
LEFT JOIN
TableB b
ON b.id = x.TableBID
WHERE a.id = 1
Предишната заявка няма да върне действителни съвпадения за a.id
различен от 1
, така че последният синтаксис (с WHERE
) е логически по-последователно.