Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Est-ce que c'est une mauvaise idée d'avoir un 'OR' dans une condition INNER JOIN ?

Ce type de JOIN n'est pas optimisable en HASH JOIN ou un MERGE JOIN .

Il peut être exprimé comme une concaténation de deux jeux de résultats :

SELECT  *
FROM    maintable m
JOIN    othertable o
ON      o.parentId = m.id
UNION
SELECT  *
FROM    maintable m
JOIN    othertable o
ON      o.id = m.parentId

, chacun d'eux étant une équijointure, cependant, SQL Server L'optimiseur de n'est pas assez intelligent pour le voir dans la requête que vous avez écrite (bien qu'ils soient logiquement équivalents).