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.