Præstationsmæssigt er de de samme (og producerer de samme planer)
Logisk set bør du lave den operation, der stadig har mening, hvis du erstatter INNER JOIN
med en LEFT JOIN
.
I netop dit tilfælde vil dette se sådan ud:
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
eller dette:
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
Den tidligere forespørgsel vil ikke returnere nogen faktiske match for a.id
andet end 1
, så sidstnævnte syntaks (med WHERE
) er logisk mere konsistent.