sql >> Base de Datos >  >> RDS >> Sqlserver

SQL JOIN vs IN rendimiento?

En términos generales, IN y JOIN son consultas diferentes que pueden arrojar resultados diferentes.

SELECT  a.*
FROM    a
JOIN    b
ON      a.col = b.col

no es lo mismo que

SELECT  a.*
FROM    a
WHERE   col IN
        (
        SELECT  col
        FROM    b
        )

, a menos que b.col es único.

Sin embargo, este es el sinónimo de la primera consulta:

SELECT  a.*
FROM    a
JOIN    (
        SELECT  DISTINCT col
        FROM    b
        )
ON      b.col = a.col

Si la columna de unión es UNIQUE y marcadas como tales, ambas consultas producen el mismo plan en SQL Server .

Si no es así, entonces IN es más rápido que JOIN en DISTINCT .

Consulte este artículo en mi blog para obtener detalles sobre el rendimiento:

  • IN frente a JOIN frente a EXISTS