Volviendo al tema del viernes sobre planes de ejecución. Supongamos que tengo
una vista como la siguiente:
SELECT
a.IdEjecutoria,
a.IdMedida,
a.Id [IdInforme],
CONVERT(char,a.FElaboracion,103) [FElaboracion],
a.IDEjecutoria,
c.Descripcion [TipoInforme]
FROM
dbo.EMJInformes as a LEFT JOIN dbo.AuxTipoInforme as c ON
a.IdTipoInforme=c.Id
WHERE
a.Id = (
SELECT TOP 1
b.Id
FROM
dbo.EMJInformes as b
WHERE
b.IDEjecutoria = a.IDEjecutoria
ORDER BY
b.FElaboracion DESC
)
la cual me saca el siguiente plan de ejecución:
1) SELECT Costo:0%
2) Compute Scalar Costo: 0%
3) Nested Loops / Left Outer Join Costo: 0%
4)
4a)
4a.1) Filter Costo: 0%
4a.2) Nested Loops / Inner Join Costo: 0%
4a.3)
4a.3a)
4a.3a.1) EMJInformes.PK_ Clustered Index Scan
4a.3b)
4a.3a.1) Hash Match/Cache
4a.3a.2) Compute Scalar Costo: 0%
4a.3a.3) Sort/TopN Sort Costo: 86%
4a.3a.4) Index Spool/Eager Spool: Costo: 0%
4a.3a.5) EMJInformes.PK_... Costo: 114%
4b)
4b.1) AuxTipoInforme Clustered Index Seek Costo: 43%
(espero haber explicado bien el gráfico) ¿Como debería de interpretar ese
gráfico? ¿Cómo sé que partes debo y se pueden mejorar y cuales me está dando
un resultado óptimo? La tabla "a" tiene 4000 registros aproximadamente y van
en crecimiento, la "c" tiene 13 registros que son siempre los mismos. Gracias
Ismael
Leer las respuestas