Qua prestaties zijn ze hetzelfde (en produceren dezelfde plannen)
Logischerwijs zou u de bewerking moeten uitvoeren die nog steeds zinvol is als u INNER JOIN . vervangt met een LEFT JOIN .
In jouw geval ziet dit er als volgt uit:
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
of dit:
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
De vorige zoekopdracht levert geen echte overeenkomsten op voor a.id anders dan 1 , dus de laatste syntaxis (met WHERE ) is logischerwijs consistenter.