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
 

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:

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 similares