Ver Mensaje Individual
  #6 (permalink)  
Antiguo 11/03/2013, 07:55
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problemas con LOW QUERY Mysql

Tengo la impresión de que sigues sin entenderme bien.
1) ¿Qué tipo de dato usa la columna "fecha"?
2) Te conviene que sea nulable.
3) En las fechas, es preferible hacer búsquedas por rango, y no por diferente a.
4) Las búsquedas por "diferente de" son siempre ineficientes. Generan table scan.
5) El WHERE no es optimizable, pero puede determinar si aprovechará os índices.
6) No se puede determinar a priori que una consulta el el LOW QUERY implique ineficiencia de consulta, porque eso dependerá de varios factores. Que aparezca o no, lo determina el tiempo definido en su variable de sistema. Pero si esa variable estuviese puesta en 20 segundos, por ejemplo, y la consulta dura 21 segundos, tu supones que es lenta, y eso puede no ser necesariamente cierto.
Una consulta puede ser rápida con 230 segundos de duración, si procesase, por ejemplo, 2.000.000.000 de registros, realizando JOINS con otras tablas con 10.000.000 registros para obtener algunos miles de registros resultantes. Y en ese contexto, no creo que podamos hablar de una consulta "lenta"... ¿No te parece?
En tu caso, podemos decir, sin siquiera mirar el log de low query, que tu consulta es ineficiente incluso aunque la tabla tuviese 10 registros. Y se puede decir eso porque el "fecha != ''" es de entrada una condición absolutamente ineficiente. Ni siquiera tengo que ejecutarla para saber que es mala.
¿Se va entendiendo?
No es sólo la estritura, ni los indices. Es el contexto lo que define si es o no optimizable.
El LOW QUERY es una guía, no una definición absoluta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)