SQL - Referencia Cruzada

 
Vista:

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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder