SQL - Query demasiado lento con select anidados

 
Vista:

Query demasiado lento con select anidados

Publicado por Ariel Mendieta (2 intervenciones) el 06/07/2007 20:51:31
Buenas, realmente tengo una muy mala performance con el siguiente query:

Tengo dos bases una de ellas llamada c_cabezal(cliente_id, fecha, nro_doc, moneda_id, total) y la otra llamada g_cotiza(moneda_id, fecha, cotizacion) que la misma responde a una tabla de cotizaciones de las monedas. Ahora esta tabla puede actualizarse eventualmente, por lo que para saber la cotización de la moneda de una determinada fecha, busca la siguiente fecha menor a la solicitada.

Por lo tanto, quiero hacer una consulta en la cual para un mes me acumule los totales por cliente de los documentos aplicándole el tipo de cambio correspondiente.

select sum ( case when a.moneda = 2 then ( a.total_doc * c.cotizacion )
else a.total_doc end )
from c_cabezl as "a", g_cotiza as "c"
where a.cod_prov = 10
and month( a.fecha ) = 6
and year( a.fecha ) = 2007
and c.moneda_id = 2
and c.fecha = ( select max(g.fecha) from g_cotiza as "g"
where g.fecha <= a.fecha_doc
and moneda_id = 2 )

y realmente la misma funciona pero tiene una lentitud tremenda. Quisiera saber si alguien me puede ayudar a mejorar los tiempos de esta consulta.

Gracias desde ya

Salu2
ARIEL
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

RE:Query demasiado lento con select anidados

Publicado por Isaias (5072 intervenciones) el 06/07/2007 20:59:21
¿Que base de datos ocupas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Query demasiado lento con select anidados

Publicado por Ariel Mendieta (2 intervenciones) el 06/07/2007 21:09:36
Lo he probado tanto en Access como en una base de datos llamada ADS para dbfs. Estamos hablando que la base c_cabezal tiene cientos de miles de registros y la de cotizaciones aproximadamente 3000 registros.

Gracias,
AM
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Query demasiado lento con select anidados

Publicado por Isaias (5072 intervenciones) el 09/07/2007 19:54:55
Ariel

Creo que debes saber que ACCESS es una base de datos de escritorio cuyo nivel de respuesta no es el adecuado cuando se manejan grandes cantidades de datos.

Deberias analizar una migracion hacia un motor mas potente como MySQL o bien, SQL SERVER 2005 EXPRESS EDITION WITH ADVANCED SERVICES.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Query demasiado lento con select anidados

Publicado por Gabriela (1 intervención) el 03/03/2010 01:13:12
Ja... Ya veo porque mi base con 300,000 datos corre lento...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar