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

Consulta larga lenta por ORDER BY

Estas en el tema de Consulta larga lenta por ORDER BY en el foro de Mysql en Foros del Web. Muy buenos días a todos los foreros hoy vengo con un pequeño gran problema que ya tengo más de dos días sin poder resolver. Lo ...
  #1 (permalink)  
Antiguo 28/04/2015, 11:38
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años, 7 meses
Puntos: 0
Consulta larga lenta por ORDER BY

Muy buenos días a todos los foreros hoy vengo con un pequeño gran problema que ya tengo más de dos días sin poder resolver.

Lo que sucede es que tengo que hacer una consulta en una sola tabla con más de medio millón de registros y todo me sale muy bien con la siguiente consulta:

Código SQL:
Ver original
  1. SELECT * FROM Traspasos LIMIT 0, 50
Con el código anterior todo sale bien pues la consulta es limitada a los primero 50 registros.

Pero el problema viene cuando quiero ordenar con ORDER BY

Código SQL:
Ver original
  1. SELECT * FROM Traspasos ORDER BY traspaso_id DESC LIMIT 0, 50
Pues quiero sólo los últimos 50 registros de la tabla Traspasos, pero al hacerlo la consulta se vuelve lentísima y me sale un exceed limit 30 seconds.

El problema se soluciona con set_limit pues cuando lo pongo se soluciona y si me muestra resultados pero se sigue tardando. Lo que necesito es que no se tarde demasiado.

Entonces me gustaría que me dijeran si alguien sabe como optimizar dicha consulta de esa tabla pero con el orden que necesito.

Gracias y Saludos

Última edición por gnzsoloyo; 28/04/2015 a las 12:06
  #2 (permalink)  
Antiguo 28/04/2015, 11:43
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Consulta larga lenta por ORDER BY

Tienes indices en tu tabla???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 28/04/2015, 11:49
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Consulta larga lenta por ORDER BY

Muchas gracias por contestar tan rápido.

La verdad es que la base de datos así como la tabla no es mía ni fueron hechas por mí, yo sólo estoy haciendo la página.

Pero sí investigue si tenía índices con:

Código SQL:
Ver original
  1. SHOW KEYS FROM Traspasos WHERE Key_name = 'PRIMARY'
Y no me dio ningún resultado :(

Por lo tanto supongo no tiene, cómo puedo hacerle para darle índices o que hago.

Espero su respuesta :)

Última edición por gnzsoloyo; 28/04/2015 a las 12:07
  #4 (permalink)  
Antiguo 28/04/2015, 11:51
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Consulta larga lenta por ORDER BY

aqui tienes como crearlos....ahora el punto mas importante, sobre que columna vas a crear el indice???

https://dev.mysql.com/doc/refman/5.0...ate-index.html
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 28/04/2015, 11:54
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Consulta larga lenta por ORDER BY

El problema es que no puedo modificar la base de datos pues como dije antes, no es mía, sólo puedo verla más no modificarla :(

no existe otra solución?

puedo crear indices o algo similar en php sin modificar la tabla directamente?
  #6 (permalink)  
Antiguo 28/04/2015, 11:59
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Consulta larga lenta por ORDER BY

A tu ultima pregunta no, el problema de tu consulta es que cuando hasce un Limit 50 te regresa los primeros registros de forma rapida, pero cuando haces el order by tiene que ordenar los registros, al no tener indices tarda en realizar el ordenamiento............y no puedes pedirle al "dueño" de la base que la revise y le cree los indices necesarios?? Otra cosa medio millon de registros no es mucho, pero tener los datos sin indices?? eso es lo grave....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 28/04/2015, 12:12
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Consulta larga lenta por ORDER BY

Bueno sí podría decirle pero no estoy muy en contacto con dicha persona.

Pero entonces no hay otra alternativa????
  #8 (permalink)  
Antiguo 28/04/2015, 12:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta larga lenta por ORDER BY

Sin índices, no hay otra...

Los ORDER BY son asesinos de performance, lo mismo que los GROUP BY. Si no puedes crear esos índices, no hay modo de mejorarlo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 28/04/2015 a las 12:26
  #9 (permalink)  
Antiguo 28/04/2015, 12:21
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Consulta larga lenta por ORDER BY

Bueno, por lo menos ya sé que es y lo que tengo que hacer y no estaré días buscando como solucionarlo.

Muchas Gracias por su atención y sus respuestas tan prontas.
  #10 (permalink)  
Antiguo 28/04/2015, 12:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta larga lenta por ORDER BY

Una cosa que debes tener en cuenta para futuro: Nunca aceptes realizar desarrollos para terceros donde no te den acceso y permiso a modificar las estructuras de la base de datos.
Es totalmente imposible hacer un trabajo decente en esas condiciones, como ya podrás haber notado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 28/04/2015 a las 14:18
  #11 (permalink)  
Antiguo 28/04/2015, 12:28
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Consulta larga lenta por ORDER BY

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Una consa que debes tener en cuenta para futuro: Nunca aceptes realziar desarrollos para terceros donde no te den acceso y permiso a modificar las estructuras de la base de datos.
Es totalmente imposible hacer un trabajo decente en esas condiciones, como ya podrás haber notado.
Excelente consejo ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: consultar, grande, php, tabla
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 22:26.