Tengo dos consultas similares que generan el mismo plan de consulta, excepto que un plan de consulta ejecuta un Análisis de índice agrupado 1316 veces, mientras que el otro lo ejecuta 1 vez.
La única diferencia entre las dos consultas es un criterio de fecha diferente. La consulta de larga duración en realidad limita los criterios de fecha y extrae menos datos.
He identificado algunos índices que ayudarán con ambas consultas, pero solo quiero entender por qué el operador de exploración de índice agrupado se está ejecutando 1316 veces en una consulta que es prácticamente la misma que la que se ejecuta 1 vez.
Verifiqué las estadísticas del PK que se está escaneando y están relativamente actualizadas.
Consulta original:
select distinct FIR_Incident.IncidentID
from FIR_Incident
left join (
select incident_id as exported_incident_id
from postnfirssummary
) exported_incidents on exported_incidents.exported_incident_id = fir_incident.incidentid
where FI_IncidentDate between '2011-06-01 00:00:00.000' and '2011-07-01 00:00:00.000'
and exported_incidents.exported_incident_id is not null
Genera este plan:
Después de reducir los criterios del intervalo de fechas:
select distinct FIR_Incident.IncidentID
from FIR_Incident
left join (
select incident_id as exported_incident_id
from postnfirssummary
) exported_incidents on exported_incidents.exported_incident_id = fir_incident.incidentid
where FI_IncidentDate between '2011-07-01 00:00:00.000' and '2011-07-02 00:00:00.000'
and exported_incidents.exported_incident_id is not null
Genera este plan:
FI_IncidentDate between '2011-07-01 00:00:00.000' and '2011-07-02 00:00:00.000'
criterios y desde entonces ha habido un número desproporcionado de inserciones en ese rango. Estima que solo se necesitarán 1.07 ejecuciones para ese rango de fechas. No los 1.316 que se producen en la actualidad.