Performance

17/02/2005 - 16:01 por Anonimo | Informe spam
Buen Dia,


Tengo algunas consultas que para mas o menos unos 3 millones de registros
corren perfectamente, sin embargo para un numero superior su rendimiento
decae muchisimo, el resultado de las consultas debe ser algo como esto:

Oficina Recibos Manuales Automaticos Efectivo cheque
100 3500000 1000000 2500000 1500000000 300000000


Para ello tengo subconsultas como:
SELECT Oficina O,
(Select count(M.Idrecibo) from Movimiento M where M.oficina - O.Oficina )
Recibos,
(Select count(M.Idrecibo) from Movimiento M where M.oficina - O.Oficina and
M.pago = 'M' ) Manuales,
(Select count(M.Idrecibo) from Movimiento M where M.oficina - O.Oficina and
M.pago = 'A' ) Automaticos,
(Select sum(M.Valor) from Movimiento M where M.oficina - O.Oficina and
M.pago = 'c' ) Cheque,
((Select sum(M.Valor) from Movimiento M where M.oficina - O.Oficina and
M.pago = 'e' ) Efectivo
from Oficinas

Alguien tiene una sugerencia para mejorar el desempeño?
teniendo en cuenta que para sacar el resultado con esta consulta se demora
55 seg. y es necesario que se haga en por lo menos 20 seg?

De antemano Gracias por sus comentarios.

@dece
 

Leer las respuestas

#1 Tinoco
17/02/2005 - 16:17 | Informe spam
Hola,

Puedes intentar con algo como:

SELECT Oficina O,
Count(M.Idrecibo) Recibos,
Count(CASE M.pago
WHEN 'M' THEN 1
ELSE 0
END) Manuales,
Count(CASE M.pago
WHEN 'A' THEN 1
ELSE 0
END) Automaticos,
SUM(CASE M.pago
WHEN 'C' THEN M.Valor
ELSE 0
END) Cheque,
..
From Oficinas O
Inner join Movimiento M on M.oficina - O.Oficina

Tinoco

"@dece" wrote:

Buen Dia,


Tengo algunas consultas que para mas o menos unos 3 millones de registros
corren perfectamente, sin embargo para un numero superior su rendimiento
decae muchisimo, el resultado de las consultas debe ser algo como esto:

Oficina Recibos Manuales Automaticos Efectivo cheque
100 3500000 1000000 2500000 1500000000 300000000


Para ello tengo subconsultas como:
SELECT Oficina O,
(Select count(M.Idrecibo) from Movimiento M where M.oficina - O.Oficina )
Recibos,
(Select count(M.Idrecibo) from Movimiento M where M.oficina - O.Oficina and
M.pago = 'M' ) Manuales,
(Select count(M.Idrecibo) from Movimiento M where M.oficina - O.Oficina and
M.pago = 'A' ) Automaticos,
(Select sum(M.Valor) from Movimiento M where M.oficina - O.Oficina and
M.pago = 'c' ) Cheque,
((Select sum(M.Valor) from Movimiento M where M.oficina - O.Oficina and
M.pago = 'e' ) Efectivo
from Oficinas

Alguien tiene una sugerencia para mejorar el desempeño?
teniendo en cuenta que para sacar el resultado con esta consulta se demora
55 seg. y es necesario que se haga en por lo menos 20 seg?

De antemano Gracias por sus comentarios.

@dece




Preguntas similares