En termes de performances, ils sont identiques (et produisent les mêmes plans)
Logiquement, vous devriez faire l'opération qui a encore du sens si vous remplacez INNER JOIN
avec un LEFT JOIN
.
Dans votre cas, cela ressemblera à ceci :
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
ou ceci :
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
L'ancienne requête ne renverra aucune correspondance réelle pour a.id
autre que 1
, donc la dernière syntaxe (avec WHERE
) est logiquement plus cohérent.