Ver Mensaje Individual
  #12 (permalink)  
Antiguo 10/01/2013, 17:59
Avatar de dashtrash
dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 1 mes
Puntos: 270
Respuesta: Consulta en varias tablas.

Mmm..La query que se ha puesto puede ser peligrosa..Yo haría un explain de la query para asegurarme de que no está ocurriendo lo siguiente:
- 1) Se obtienen TODAS las filas de facturas
- 2) Se obtienen TODAS las filas de facturas 2011
- 3) Se obtienen TODAS las filas de facturas 2012
- 4) Se crea 1 resultset con todas esas facturas.
- 5) Se filtra por las fechas seleccionadas.


Es decir, primero, en memoria, se crea una tabla temporal con todas las filas de todas las tablas (que, dependiendo del numero de facturas será más o menos grande), y luego se filtra.
Supón que la query es sólo para fechas dentro de 2011.Se están procesando muchas filas que, a priori, pueden ser descartadas.

No creo que el optimizador de MYSQL mueva las restricciones de fecha, desde la query derivada, a cada una de las queries fuente (las del UNION ALL)

Yo, aunque fuera por seguridad, pondría el where dentro de cada una de las subqueries.Asi mysql filtra antes, y el resulset que maneja es mucho menor.