Dal punto di vista delle prestazioni, sono gli stessi (e producono gli stessi piani)
Logicamente, dovresti eseguire l'operazione che ha ancora senso se sostituisci INNER JOIN con un LEFT JOIN .
Nel tuo caso sarà simile a questo:
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 questo:
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 precedente query non restituirà alcuna corrispondenza effettiva per a.id diverso da 1 , quindi quest'ultima sintassi (con WHERE ) è logicamente più coerente.