Buenos dias.
Quisiera que alguien me explicara el por qué de lo que comento en el título.
Tengo esta consulta:
Código SQL:
Ver originalSELECT 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
Actualmente se demora 36 segundos en ejecutarse.
En cambio, si le cambio los dos INNER JOIN por LEFT JOIN, como sigue:
Código SQL:
Ver originalSELECT 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
En este caso la consulta se ejecuta en 1 segundo.
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.