Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

se puede optimizar esta busqueda....?

Estas en el tema de se puede optimizar esta busqueda....? en el foro de Mysql en Foros del Web. Antes que nada un saludo y explico...al momento tengo dos bases de datos:DAT2008 y DAT2009, son exactamente iguales y cada una almacena información al año ...
  #1 (permalink)  
Antiguo 06/08/2009, 09:29
 
Fecha de Ingreso: abril-2005
Mensajes: 124
Antigüedad: 19 años
Puntos: 0
se puede optimizar esta busqueda....?

Antes que nada un saludo y explico...al momento tengo dos bases de datos:DAT2008 y DAT2009, son exactamente iguales y cada una almacena información al año que le corresponda.

Los usuarios hacen consultas por ejemplo del 12/12/2008 al 03/01/2009 y es cuando busco en ambas tablas y relizo la sumatoria de x campos. Esta es la sentencia y funciona muy bien, el problema es que se tarda mucho y cuando son varios registros el tiempo es bastante tardado, creen que se pueda mejorar?, mucho agradecería su aportación.


select SUM(prec), SUM(temp), SUM(hure), SUM(wins), SUM(wind), MIN(temp), MAX(temp), AVG(temp), AVG(hure), AVG(wins), AVG(wind) from (select * from DAT2008 union select * from DAT2009)cant where clave='MOR-002' and datetime>='2008-12-28 00:00' and datetime<='2009-01-03 23:45' and prec <> -999 and temp <> -999 and hure <> -999 and wins <> -999 and wind <> -999;

Gracias
  #2 (permalink)  
Antiguo 06/08/2009, 16:51
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Respuesta: se puede optimizar esta busqueda....?

Hola una alternativa seria colocar indices en dichos campos para poder acelerar un poco mas la busqueda.

Salu2.
__________________
->Aprender es un proceso que incluye el error..
  #3 (permalink)  
Antiguo 07/08/2009, 05:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: se puede optimizar esta busqueda....?

Por si te sirve de ayuda, además de lo que te ha dicho Cala932, haz alguna prueba con los cambios que te propongo (yo no he probado nada).

consejo:
-prueba quitando el * de las tablas que unes con UNION y escribe sólo los campos que utilices y haz también la consulta de tiempo y las demás dentro de esa union:

ej.

select SUM(prec), SUM(temp), SUM(hure), SUM(wins), SUM(wind), MIN(temp), MAX(temp), AVG(temp), AVG(hure), AVG(wins), AVG(wind) from ((select prec, temp,hure, wins, winds from DAT2008 where clave='MOR-002' and datetime>='2008-12-28 00:00' and prec <> -999 and temp <> -999 and hure <> -999 and wins <> -999 and wind <> -999 ) union all (select prec, temp,hure, wins, winds from DAT2009 where clave='MOR-002' and datetime<='2009-01-03 23:45' and prec <> -999 and temp <> -999 and hure <> -999 and wins <> -999 and wind <> -999))cant

Como te he dicho, no he probado nada. La idea es que todos esos valores agrupados se hagan sobre menos datos, y quizás el mejor modo de hacerlo es trayéndote sólo los valores que te interesen. Por cierto, que la consulta de datetime la he aplicado pensando que siempre buscarás en esas dos tablas; si no es así, tendrás que aplicar la doble consulta a cada parte de la union.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:23.