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

Preguntas similare

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




Respuesta Responder a este mensaje
#2 Anonimo
17/02/2005 - 17:49 | Informe spam
Gracias Tinoco

Me funciona perfecto para Efectivo y Cheques pero para Manuales y
Automaticos da lo mismo para el total de recibos
es decir;

recibos Manuales Automaticos
4397 4397 4397


@dece

"Tinoco" wrote:

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
>
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida