Prestationsmässigt är de samma (och producerar samma planer)
Logiskt sett bör du göra den operation som fortfarande är meningsfull om du ersätter INNER JOIN
med en LEFT JOIN
.
I just ditt fall kommer detta att se ut så här:
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 detta:
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 tidigare frågan kommer inte att returnera några faktiska matchningar för a.id
annat än 1
, så den senare syntaxen (med WHERE
) är logiskt mer konsekvent.