Em termos de desempenho, eles são os mesmos (e produzem os mesmos planos)
Logicamente, você deve fazer a operação que ainda faz sentido se substituir
INNER JOIN com um LEFT JOIN . No seu caso, ficará assim:
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 isto:
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
A consulta anterior não retornará nenhuma correspondência real para
a.id diferente de 1 , então a última sintaxe (com WHERE ) é logicamente mais consistente.