Como interpretar el pla de ejecución

02/02/2006 - 22:33 por Mauricio Pulla | Informe spam
Hola.

Tengo 2 Sql que me devuelven el mismo resultado, pero quisiera saber cual es
el mas optimo no se interpretar el plan de ejcucion me recomiendan algun
link donde puedo encontrar información.

1-
Select Empleado.iEmpleadoId, Empleado.cApellidos, Empleado.cNombres,
Empleado.nActivo, Empleado.iIdRol,
Empleado.iIdCentroCosto, Con_Cuenta.cNombre As cCCostoName,
Con_Cuenta.cCtaId, Nom_AltaBaja.tAlta, Nom_AltaBaja.tBaja,
IsNull((Select Sum(VacacionLiqC.nDiasTotal) From VacacionLiqC Where
VacacionLiqC.iIdEmpleado = Empleado.iEmpleadoId Group By iIdEmpleado), 0) AS
nDiasTomados
From Empleado Inner Join Nom_AltaBaja On Empleado.iIdAltaBaja Nom_AltaBaja.iAltaBajaId Inner Join Con_Cuenta ON Empleado.iIdCentroCosto Con_Cuenta.iCtaId
Order by cApellidos, cNombres

2.-
Select Empleado.iEmpleadoId, Empleado.cApellidos, Empleado.cNombres,
Empleado.nActivo, Empleado.iIdRol,
Empleado.iIdCentroCosto, Con_Cuenta.cNombre As cCCostoName,
Con_Cuenta.cCtaId, Nom_AltaBaja.tAlta, Nom_AltaBaja.tBaja,
Isnull(Sum(VacacionLiqC.nDiasTotal), 0) AS nDiasTomados
From Empleado Inner Join Nom_AltaBaja On Empleado.iIdAltaBaja Nom_AltaBaja.iAltaBajaId
Inner Join Con_Cuenta ON Empleado.iIdCentroCosto = Con_Cuenta.iCtaId
Left join VacacionLiqC On VacacionLiqC.iIdEmpleado Empleado.iEmpleadoId
Group By Empleado.iEmpleadoId, Empleado.cApellidos, Empleado.cNombres,
Empleado.nActivo, Empleado.iIdRol,
Empleado.iIdCentroCosto, Con_Cuenta.cNombre, Con_Cuenta.cCtaId,
Nom_AltaBaja.tAlta, Nom_AltaBaja.tBaja
Order by cApellidos, cNombres

Saludos.
Muaricio Pulla.
Cuenca-Ecuador

Preguntas similare

Leer las respuestas

#1 Guillermo Roldan
03/02/2006 - 12:30 | Informe spam
Hola Mauricio,

Yo no soy muy bueno interpretando planes de ejecución, pero hay algunas
cosas que siempre hay que fijarse, principalmente, si se realiza un FULL
TABLE SCAN de la tabla, o si por el contrario se accede a la tabla por un
índice, ya sea mediante FULL INDEX SCAN o SEEK INDEX.

Lo que yo suelo buscar, es evitar los FULL SCAN de tabla y a poder ser,
también de índice.

De cualquier modo, con la información que nos has pasado poco podemos hacer,
ya que ni sabemos como está desarrollada la indexación de tus tablas, ni
sabemos el plan de ejecución, etc.

No obstante, a priori me gusta más la primera de las consultas, ya que no
utiliza GROUP BY (los ORDER BY y GROUP BY penalizan, salvo en algunos casos
que coincididan con un índice clustered).

No sé si te seré de ayuda, pero por aquí hay más gente que sabe más de esto
que yo.

Saludos,
Guillermo

"Mauricio Pulla" wrote:

Mostrar la cita
#2 Mauricio Pulla
03/02/2006 - 14:37 | Informe spam
Ok. Gillermo.

Muy agradecido por tu aporte.

Saludos.
Mauricio Pulla.
Cuenca-Ecuador


"Guillermo Roldan" escribió en
el mensaje news:
Mostrar la cita
hacer,
Mostrar la cita
casos
Mostrar la cita
esto
Mostrar la cita
cual es
Mostrar la cita
Where
Mostrar la cita
0) AS
Mostrar la cita
Empleado.iIdCentroCosto > > Con_Cuenta.iCtaId
Mostrar la cita
#3 Gustavo Larriera [MVP]
03/02/2006 - 15:53 | Informe spam
Si buscas en la web vas a encontrar mucha información. Por ejemplo:

SQL Tuning Tutorial - Understanding a Database Execution Plan (1)
By Gael Fraiteur

http://www.codeproject.com/cs/datab...rial-1.asp

Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.

"Mauricio Pulla" wrote in message
news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida