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

Mejorar Performance de Procedimiento Almacenado

Estas en el tema de Mejorar Performance de Procedimiento Almacenado en el foro de SQL Server en Foros del Web. Estimados Colegas: Tengo el siguiente caso, dentro de mi procedimiento almacenado tengo un cursor que me recorre una tablas, lamentablemente este tipo diseños no es ...
  #1 (permalink)  
Antiguo 08/02/2011, 15:11
 
Fecha de Ingreso: febrero-2011
Ubicación: Peru-Lima-Chorrillos
Mensajes: 19
Antigüedad: 13 años, 9 meses
Puntos: 0
Mejorar Performance de Procedimiento Almacenado

Estimados Colegas:

Tengo el siguiente caso, dentro de mi procedimiento almacenado tengo un cursor que me recorre una tablas, lamentablemente este tipo diseños no es nada bueno para el motor de base de datos.

Alguien me puede enseñar como puede recorrer las tablas temporales con la sentencia While Loop en sql-server?

De antemano muchas gracias.

Saludos cordiales,
Ronald León Madrid.
  #2 (permalink)  
Antiguo 08/02/2011, 15:20
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 3 meses
Puntos: 39
Respuesta: Mejorar Performance de Procedimiento Almacenado

While tampoco es muy recomendable. Mejor explicanos que quieres hacer, o muestra tu procedimiento.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 09/02/2011, 10:16
 
Fecha de Ingreso: febrero-2011
Ubicación: Peru-Lima-Chorrillos
Mensajes: 19
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Mejorar Performance de Procedimiento Almacenado

Estimado Flavio:

Que tal maestro, tengo un procedimiento almacenado donde te explico la siguiente estructura:

Cita:
--Llena la tabla temporal según los paramentro de periodo y mes
Select
CodigoUnidadNegocio,
DescripcionUnidadNegocio,
CodigoMateriaPrima,
DescripcionMateriaPrima,
Unidad_Medida,
Pronostico,
Fecha_Explosion,
Stock_Total,
Stock_Transito,
Dias_Objetivo,
CodigoProveedor,
DescripcionProveedor,
PaisDelProveedor
Into
#tmpSeguimiento
From
Datamartbo.dbo.CI_SEGUIMIENTO_INSUMOS
Where
Year(Fecha_Explosion) = @Periodo And
Month(Fecha_Explosion) = @Mes

--Estructura de la Tabla Temporal

Declare @temp Table
(
PlanCompraID int,
Periodo int,
Mes int,
CodigoMateriaPrima varchar(20),
DescripcionMateriaPrima varchar(201),
UnidadMedida varchar(6),
PronosticoActual numeric(15,8),
ConsumoPromedioMensual numeric(15,8),
Duracion int,
SafetyStock numeric(15,8),
StockDisponible numeric(15,8),
StockTotal numeric(15,8),
StockTransito numeric(15,8),
DiasObjetivo int,
Decision varchar(10),
Cantidad int,
PaisProveedor char(3),
FlgEst bit
)

DECLARE Cur_Articulo CURSOR FAST_FORWARD
FOR
Select CodigoMateriaPrima,DescripcionMateriaPrima,Unidad_ Medida,Pronostico,CodigoProveedor,Stock_Total,Stoc k_Transito,Dias_Objetivo,PaisDelProveedor
From
#TmpSeguimiento

Open Cur_Articulo

Fetch Next From Cur_Articulo
Into @CodigoMateriaPrima,@DescripcionMateriaPrima,@Unid ad_Medida,@Pronostico,@CodigoProveedor,@Stock_Tota l,@Stock_Transito,@Dias_Objetivo,@PaisDelProveedor
While @@FETCH_STATUS = 0
Begin

Fetch Next From Cur_Articulo
Into @CodigoMateriaPrima,@DescripcionMateriaPrima,@Unid ad_Medida,@Pronostico,@CodigoProveedor,@Stock_Tota l,@Stock_Transito,@Dias_Objetivo,@PaisDelProveedor

End
Close Cur_Articulo
Deallocate Cur_Articulo
Todo este proceso dura como 20 minutos, porque realiza calculos.

La idea es bajarlo a la mitad.

Saludos cordiales,
Ronald León Madrid
  #4 (permalink)  
Antiguo 09/02/2011, 10:17
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Mejorar Performance de Procedimiento Almacenado

Ronald, es bueno verte por aca

¿Donde es que estas realizando los CALCULOS?
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 09/02/2011, 13:14
 
Fecha de Ingreso: febrero-2011
Ubicación: Peru-Lima-Chorrillos
Mensajes: 19
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Mejorar Performance de Procedimiento Almacenado

Estimado iislas:

Que tal un gusto en saludarte, los calculos lo realizo dentro del Cursor donde estoy recorriendo la tabla, donde llamo a procedimiento almacenados de calculos mediante variables que se van insertanto a la tabla @temp, todo esto me demora entre 20 minutos y 30 minutos. La idea es que el tiempo de ejecución se reduzca considerablemente.

Saludos cordiales,
Ronald León Madrid.
  #6 (permalink)  
Antiguo 09/02/2011, 13:36
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 3 meses
Puntos: 39
Respuesta: Mejorar Performance de Procedimiento Almacenado

Justo esos calculos necesitamos ver.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.

Etiquetas: performance, procedimiento, mejoras, almacenar
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 07:15.