Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/01/2011, 08:21
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: select demora mucho en obrener resultados

Cita:
Como ven es un simple select con un like que tiene comodines ( % ), en el primer caso lo hace enseguida porque pido todo los campos y sin orden. Pero cuando lo quiero ordenado demora mucho.
La tabla tiene 160.000 registros cosa que no considero demasiado
Una consulta con LIKE, lamentablemente, no es una consulta "simple". Es el tipo de consultas de baja eficiencia porque lo que busca es similitudes, y las similitudes requieren e principio un escaneo de toda la tabla. Siempre.
En ese sentido es más eficiente, si vas a usar LIKE, usarlo con campos con índices y definir que lo usará (FORCE INDEX ....) al leer la tabla, antes que usar un LIKE pelado.
Además de eso, estás invocando un ORDER BY, que junto con GROUP BY son las clausulas que más consumen tiempo y recursos, por lo que si la consulta se tarda demasiado, bueno, no tiene mucha más solución que modificar la configuración del servidor (sort_buffer, log_slow_queries)l o bien el hardware, para optimizarlo.
Ten en cuenta también, que todo ordenamiento por campo no clave o no perteneciente a un INDEX, insumirá siempre más tiempo, porque debe ordenar por comparación de valores... y a más valores, más tiempo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)