Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/05/2007, 17:07
Sugey
 
Fecha de Ingreso: mayo-2006
Mensajes: 215
Antigüedad: 18 años, 7 meses
Puntos: 0
Re: Consulta, seleccion, por periodo de tiempo

Hola, creo que mi mensaje anterior, no tuvo mucho exito, jajaja.

Ahora tratare de explicarlo mejor, ya hice un script para solucionar mi necesidad de informacion, y me devuelve lo que quiero, pero tiene un detalle se tarda demasiado :(

Tengo una tabla que tiene datos, que varian por 10 segundos, tiene muchos registros, son 7 millones en la tabla, pero el usuario quiere poder elegir un margen de uno o mas minutos.

Para buscar registros que variaron en un minuto de diferencia, de un lapso de 2 horas, se tarda 16 minutos en procesar la consulta :S

No puedo poner eso en la web, se va a terminar el timeout :S

Miren este es mi script:

DROP TABLE #temp_val_ana
GO
CREATE TABLE #temp_val_ana (
[id_senal] [nvarchar] (10) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[fecha_registro] [datetime] NOT NULL ,
[Valor_promedio] [float] NOT NULL ,
[Valor_maximo] [float] NOT NULL ,
[Valor_minimo] [float] NOT NULL
) ON [PRIMARY]

declare @fecha_inicial datetime
declare @fecha_final datetime
DECLARE @f_reso datetime
declare @reso int

set @fecha_inicial= '02/05/2007 12:20:00'
set @fecha_final= '02/05/2007 14:20:00'
set @reso= 1

while (@fecha_inicial <= @fecha_final )
begin
select @f_reso = dateadd(mi,@reso,@fecha_inicial)

insert into #temp_val_ana

SELECT VAL_ANA.Id_Senal, MIN(VAL_ANA.Fecha_Registro) AS Expr1, AVG(VAL_ANA.Valor) AS promedio, MAX(VAL_ANA.Valor) AS val_max, MIN(VAL_ANA.Valor) AS val_min

FROM dbo.VALORES_ANALOGICOS VAL_ANA INNER JOIN
dbo.VARIABLES_C01 VAR_C01 ON VAL_ANA.Id_Senal = VAR_C01.Id_Senal INNER JOIN
dbo.TIPOS_DE_SISTEMAS SIST ON VAR_C01.No_Sistema = SIST.No_Sistema
WHERE ( SIST.No_Central IN ('1')) AND (CAST(VAL_ANA.Fecha_Registro AS DATETIME) BETWEEN @fecha_inicial AND @f_reso)
AND VAL_ANA.Id_Senal= 'A01U1040'
GROUP BY VAL_ANA.Id_Senal

set @fecha_inicial=@f_reso
end

-- La fecha se va incrementando minuto a minuto, se seleccionan los registros pertenecientes a ese minuto, y se sacan algunos calculos, despues la fecha se incrementa, y asi continua hasta que llega a la fecha final, que introdujo el usuario, la resolucion es de un minuto, para este ejemplo, pero el usuario podra elegirlo de un combo.

No se que esta alentando ese script, no se si sea la tabla temporal, o ke...... me dijeron que otra alternativa son vistas, pero como puedo crear la vista e ir insertandole registros en el ciclo ??

Creo que no pueden modificarse, y se construyen a partir de un select, mmm bueno, ojala tengan alguna otra sugerencia..

Gracias, Saludos.