Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Diferencia en planes de ejecucion entre procedimiento y query aislado

Estas en el tema de Diferencia en planes de ejecucion entre procedimiento y query aislado en el foro de SQL Server en Foros del Web. Hola!, Estoy teniendo un problema de performance con un sp (sql 2000). Al analizar el plan de ejecucion encuentro que está realizando un table scan, ...
  #1 (permalink)  
Antiguo 17/08/2011, 08:43
 
Fecha de Ingreso: agosto-2011
Mensajes: 3
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta Diferencia en planes de ejecucion entre procedimiento y query aislado

Hola!, Estoy teniendo un problema de performance con un sp (sql 2000). Al analizar el plan de ejecucion encuentro que está realizando un table scan, pero si yo ejecuto el select por fuera (el mismo del sp, con los mismos parametros y tipo), el plan de ejecucion opta por un scan index. Ya he regenerado el sp, tambien lo he marcado para recompilar (sp_recompile...) y sigue la diferencia entre los planes de ejecucion.

El query es de este tipo:
declare @fechadesde datetime , @fechahasta datetime
set
select top 10 headerId from Headers
where campoId=@Id
and campotexto='DD'
and campofecha between @fechadesde and @fechahasta

existe un indice por los tres campos, en ese orden.

@id esta definido en la cabecera del sp como int, para realizar las pruebas lo defino de igual medida.

Desde ya muchas gracias por cualquier sugerencia.
  #2 (permalink)  
Antiguo 17/08/2011, 09:13
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Diferencia en planes de ejecucion entre procedimiento y query aislado

Ya revisaste el table scan sobre que va? sobre el resultado del procedure o sobre la tabla? checate la el with (index nombre_indice)(creo que asi va jejeje) para que forces tu query a que use un indice.

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 17/08/2011, 09:48
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 8 meses
Puntos: 180
Respuesta: Diferencia en planes de ejecucion entre procedimiento y query aislado

No es recomendable utilizar el (INDEX = indx......), ya que SQL Server haria caso omiso de los planes de ejecucion.

Yo cambiaria

and campofecha >= @fechadesde and campofecha <= @fechahasta

Antes de ejecutar tu query, setea:

SET STATISTICS IO ON

Y muestranos las lecturas que esta haciendo.
__________________
MCTS Isaias Islas

Etiquetas: plan_ejecucion, procedimiento_almacenado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:22.