Rendimientos y planes de ejecucion

08/01/2007 - 10:06 por Ismael | Informe spam
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

#1 Maxi
08/01/2007 - 12:37 | Informe spam
Ismael, en los planes tienes el costo total del mismo con lo cual puedes
hacer comparatibas entre unos y otros.
Lo que miraria yo en los planes basicamente es:

1) Que no haya table Scan
2) Que no haya Cluster index Scan
3) La cantidad de lecturas


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"Ismael" escribió en el mensaje
news:
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

Preguntas similares