Referencia Cruzada
Publicado por Hubert (98 intervenciones) el 04/11/2006 01:56:20
Hola grupo.
Lo siguiente es una consulta tipo Referencia Cruzada, esta se demora 13 Seg (1n 7 agencias).
Si lo hago con una agencia lo hace en 2 segundos. Si hiciera la consulta para 50 agencias, segun mi calculo se deme demorar 100 seg. a(prox ).
La tabla tiene como indice cagencia, harribo, latencion
Con ese tiempo de 100 Seg. cualquiera observará mi consulta.
Se puede optimizar este tiempo? segun el codigo abajo.
Gracias.
SELECT a.cAgencia, CASE WHEN a.latencion=1 THEN 1 ELSE 2 END AS codigoI,
C1=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '08:00' AND '08:59') THEN 1 ELSE 0 END),
C2=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '09:00' AND '09:59') THEN 1 ELSE 0 END),
C3=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '10:00' AND '10:59') THEN 1 ELSE 0 END),
C4=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '11:00' AND '11:59') THEN 1 ELSE 0 END),
C5=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '12:00' AND '12:59') THEN 1 ELSE 0 END),
C6=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '13:00' AND '13:59') THEN 1 ELSE 0 END),
C7=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '14:00' AND '14:59') THEN 1 ELSE 0 END),
C8=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '15:00' AND '15:59') THEN 1 ELSE 0 END),
C9=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '16:00' AND '16:59') THEN 1 ELSE 0 END),
C10=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '17:00' AND '18:00') THEN 1 ELSE 0 END)
FROM MoviDiarioH a
WHERE a.harribo>='20050101 00:00:00' AND a.harribo<='20051231 23:59:59'
AND ( a.cAgencia IN (1, 2, 3, 6, 8, 11, 12))
AND (a.latencion = 1 OR a.latencion = 2)
GROUP BY a.cAgencia, a.latencion
Saludos.
Lo siguiente es una consulta tipo Referencia Cruzada, esta se demora 13 Seg (1n 7 agencias).
Si lo hago con una agencia lo hace en 2 segundos. Si hiciera la consulta para 50 agencias, segun mi calculo se deme demorar 100 seg. a(prox ).
La tabla tiene como indice cagencia, harribo, latencion
Con ese tiempo de 100 Seg. cualquiera observará mi consulta.
Se puede optimizar este tiempo? segun el codigo abajo.
Gracias.
SELECT a.cAgencia, CASE WHEN a.latencion=1 THEN 1 ELSE 2 END AS codigoI,
C1=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '08:00' AND '08:59') THEN 1 ELSE 0 END),
C2=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '09:00' AND '09:59') THEN 1 ELSE 0 END),
C3=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '10:00' AND '10:59') THEN 1 ELSE 0 END),
C4=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '11:00' AND '11:59') THEN 1 ELSE 0 END),
C5=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '12:00' AND '12:59') THEN 1 ELSE 0 END),
C6=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '13:00' AND '13:59') THEN 1 ELSE 0 END),
C7=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '14:00' AND '14:59') THEN 1 ELSE 0 END),
C8=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '15:00' AND '15:59') THEN 1 ELSE 0 END),
C9=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '16:00' AND '16:59') THEN 1 ELSE 0 END),
C10=SUM(CASE WHEN (CONVERT(char(5), a.harribo, 14) BETWEEN '17:00' AND '18:00') THEN 1 ELSE 0 END)
FROM MoviDiarioH a
WHERE a.harribo>='20050101 00:00:00' AND a.harribo<='20051231 23:59:59'
AND ( a.cAgencia IN (1, 2, 3, 6, 8, 11, 12))
AND (a.latencion = 1 OR a.latencion = 2)
GROUP BY a.cAgencia, a.latencion
Saludos.
Valora esta pregunta


0