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

Mejorar consulta

Estas en el tema de Mejorar consulta en el foro de Mysql en Foros del Web. Quiero saber como mejorar esta consulta ya que mi tabla tiene mas de 300000 registros y se tarda mas de 30 segundo en hacerla @import ...
  #1 (permalink)  
Antiguo 10/09/2010, 11:22
Avatar de Fabu_dina  
Fecha de Ingreso: enero-2004
Mensajes: 425
Antigüedad: 20 años, 3 meses
Puntos: 1
Mejorar consulta

Quiero saber como mejorar esta consulta ya que mi tabla tiene mas de 300000 registros y se tarda mas de 30 segundo en hacerla

Código MySQL:
Ver original
  1. SELECT sum(saldos_costo) FROM info_963
  2. where year(saldos_cobrado)=2010 and month(saldos_cobrado)=8 group by saldos_sucursal
  #2 (permalink)  
Antiguo 10/09/2010, 11:43
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
Respuesta: Mejorar consulta

¿Y si creas una vista?

CREATE VIEW VSumaSaldos AS
SELECT sum(saldos_costo) FROM info_963
WHERE YEAR(saldos_cobrado)=2010 AND MONTH(saldos_cobrado)=8 GROUP BY saldos_sucursal;

Y pruebas a consultar la vista

select * from VSumaSaldos;

Y mira cuanto tiempo tarda.


salu2
  #3 (permalink)  
Antiguo 10/09/2010, 11:45
Avatar de Fabu_dina  
Fecha de Ingreso: enero-2004
Mensajes: 425
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: Mejorar consulta

el problema es que los datos de año y mes son variables
  #4 (permalink)  
Antiguo 10/09/2010, 11:50
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
Respuesta: Mejorar consulta

Referencia: http://cnx.org/content/m18786/latest/
Cita:
Dado que las vistas aparecen como tablas, pueden aparecer en otras consultas. Es importante tener esto en cuenta cuando se están diseñando consultas, dado que puede afectar al rendimiento. Para ello, algunos gestores de bases de datos tienen sintaxis extendidas para controlar cómo se representan internamente las vistas.

Por ejemplo, MySQL tiene una cláusula ALGORITHM que puede acompañarse de tres valores: MERGE,TEMPTABLE o UNDEFINED, con el siguiente significado:

* Con MERGE, el texto de las sentencias que hagan referencia a una vista se fusiona con el texto de la definición de la vista, de modo que las partes de la definición de la vista reemplazan a las partes correspondientes de la sentencia.
* Con TEMPTABLE, los resultados de la vista se recuperan en una tabla temporal, que se usa después para ejecutar la consulta.

El uso de TEMPTABLE consume un espacio temporal adicional, pero puede tener un mejor rendimiento ya que después de hacer la copia de los datos en la tabla temporal, se usa ésta y se libera la tabla o tablas originales.
salu2

Etiquetas: mejoras
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 05:14.