En cuanto al rendimiento, son iguales (y producen los mismos planes)
Lógicamente, deberías hacer la operación que todavía tiene sentido si reemplazas INNER JOIN con un LEFT JOIN .
En su propio caso, esto se verá así:
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
o esto:
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
La consulta anterior no devolverá ninguna coincidencia real para a.id diferente a 1 , por lo que la última sintaxis (con WHERE ) es lógicamente más consistente.