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

EXISTS vs JOIN y uso de la cláusula EXISTS

EXISTS se utiliza para devolver un valor booleano, JOIN devuelve otra tabla completa

EXISTS solo se usa para probar si una subconsulta devuelve resultados y cortocircuitos tan pronto como lo hace. JOIN se utiliza para ampliar un conjunto de resultados combinándolo con campos adicionales de otra tabla con la que existe una relación.

En su ejemplo, las consultas son semánticamente equivalentes.

En general, use EXISTS cuando:

  • No necesita devolver datos de la tabla relacionada
  • Tiene duplicados en la tabla relacionada (JOIN puede causar filas duplicadas si los valores se repiten)
  • Desea verificar la existencia (usar en lugar de LEFT OUTER JOIN...NULL condición)

Si tiene índices adecuados, la mayoría de las veces EXISTS funcionará de manera idéntica a JOIN . La excepción es en subconsultas muy complicadas, donde normalmente es más rápido usar EXISTS .

Si tu JOIN la clave no está indexada, puede ser más rápido usar EXISTS pero deberá realizar una prueba para su circunstancia específica.

JOIN la sintaxis es más fácil de leer y más clara normalmente también.