Quisiera que alguien me explicara el por qué de lo que comento en el título.
Tengo esta consulta:
Código SQL:
Actualmente se demora 36 segundos en ejecutarse.Ver original
SELECT P.Fecha AS Fecha, P.CodigoTrabajador AS CodigoTrabajador, T.Nombre AS NombreTrabajador, 'PARTE TRABAJO' AS TipoIncidencia, P.HoraInicio AS HoraInicio, 'Parte sin Asistencia | ' + L.CodigoOrdenProduccion + ' | ' + P.CodigoOperacion + ' - ' + L.NombreOperacion AS Descripcion FROM PartesTrabajo P INNER JOIN Trabajadores AS T ON P.CodigoTrabajador = T.CodigoTrabajador INNER JOIN LineasOrdenesProduccion AS L ON P.IdLineaOrdenProduccion = L.IdLineaOrdenProduccion LEFT JOIN AsistenciasTrabajadores A ON P.CodigoTrabajador = A.CodigoTrabajador AND P.Fecha = A.Fecha
En cambio, si le cambio los dos INNER JOIN por LEFT JOIN, como sigue:
Código SQL:
En este caso la consulta se ejecuta en 1 segundo.Ver original
SELECT P.Fecha AS Fecha, P.CodigoTrabajador AS CodigoTrabajador, T.Nombre AS NombreTrabajador, 'PARTE TRABAJO' AS TipoIncidencia, P.HoraInicio AS HoraInicio, 'Parte sin Asistencia | ' + L.CodigoOrdenProduccion + ' | ' + P.CodigoOperacion + ' - ' + L.NombreOperacion AS Descripcion FROM PartesTrabajo P LEFT JOIN Trabajadores AS T ON P.CodigoTrabajador = T.CodigoTrabajador LEFT JOIN LineasOrdenesProduccion AS L ON P.IdLineaOrdenProduccion = L.IdLineaOrdenProduccion LEFT JOIN AsistenciasTrabajadores A ON P.CodigoTrabajador = A.CodigoTrabajador AND P.Fecha = A.Fecha
Y lo más curioso es que el resultado es el mismo tanto en una como en la otra.
¿Alguien capaz de explicar esto puede iluminarme un poco?
Muchas gracias y un saludo.