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

LEFT JOIN Significativamente más rápido que INNER JOIN

La combinación izquierda parece ser más rápida porque SQL se ve obligado a hacer primero la selección más pequeña y luego unirse a este conjunto más pequeño de registros. Por alguna razón, el optimizador no quiere hacer esto de forma natural.

3 formas de forzar que las uniones sucedan en el orden correcto:

  1. Seleccione el primer subconjunto de datos en una tabla temporal (o variable de tabla) y luego únase a ella
  2. Use combinaciones izquierdas (y recuerde que esto podría devolver datos diferentes porque es una combinación izquierda, no una combinación interna)
  3. utilice la palabra clave FORCE ORDER. Tenga en cuenta que si los tamaños de las tablas o los esquemas cambian, es posible que el plan de consulta no sea correcto (consulte https://dba.stackexchange.com/questions/45388/forcing-join-order )