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

consulta con limit es muy lenta

Estas en el tema de consulta con limit es muy lenta en el foro de Mysql en Foros del Web. Pues obtén previamente la lista de saltos... @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT ID , orden FROM ( SELECT ID , ( @pos := ...

  #31 (permalink)  
Antiguo 14/05/2015, 06:11
Avatar de 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: consulta con limit es muy lenta

Pues obtén previamente la lista de saltos...

Código MySQL:
Ver original
  1. SELECT ID, orden
  2. FROM (SELECT ID, (@pos:=@pos+1) orden
  3.            FROM tabla JOIN (SELECT @pos:=0) T) T2
  4. WHERE MOD(orden, 100) = 0;
Si la armé bien, eso debería devolverte una lista de IDs que correspondan a las posiciones 100, 2000, 300, etc., con la posicion que se obtendrá en el paginado. Esa consulta deberás hacerla antes de mostrar nada, y conservar el resultado en memoria para usos posteriores.
Como estás consultando por el ID, usualmente MySQL utilizaría el indice primario, sin acceder a la tabla, que es mucho más rápido.

Nota Bene: Esto lo estoy ideando en este momento, haría que porbarlo pero me parece qu e puede funcionar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #32 (permalink)  
Antiguo 14/05/2015, 07:08
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: consulta con limit es muy lenta

Hola no entiendo muy bien la idea que me propones, me puedes explicar la consulta?no veo el filtro para el campo eliminado=0.
Saludos.
  #33 (permalink)  
Antiguo 14/05/2015, 07:15
Avatar de 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: consulta con limit es muy lenta

Cita:
no veo el filtro para el campo eliminado=0.
Pues agrégalo...
Código MySQL:
Ver original
  1. SELECT ID, orden
  2. FROM (SELECT ID, (@pos:=@pos+1) orden
  3.            FROM empresa JOIN (SELECT @pos:=0) T
  4.            WHERE eliminado = 0) T2
  5. WHERE MOD(orden, 100) = 0;
Y luego, hazme un favor: prueba la consulta haciendola correr en MySQL y fíjate qué devuelve...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #34 (permalink)  
Antiguo 14/05/2015, 08:46
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: consulta con limit es muy lenta

Hola gnzsoloyo funciona perfecto solo que tarda casi 3 segundos y aunque despues con el paginador teniendo sus saltos correspondientes me tarda 0.01 no se si me vale la pena ya que con el limit y sus dos parametros las 10 primeras paginas me tardan 0.03 las otras 10 siguientes 0.06 asi sucesivamente pero me ahorro los 3 segundos de la primera pagina, igual como el usuario no suele aceder a mas de 10 paginas optare por dejarlo como estaba aunque tengo mis dudas porque despues el paginador se vuelve super rapido gracias a tener los saltos.

Aunque repito tu idea fue perfecta y me lo tengo que replantear en que usar, porque agilizar esa consulta ya no es posible verdad?
saludos
  #35 (permalink)  
Antiguo 14/05/2015, 08:57
Avatar de 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: consulta con limit es muy lenta

Cita:
porque agilizar esa consulta ya no es posible verdad?
No en el contexto descripto por ti.
Sólo quedaría ver si es posible trabajar con mejores servidores, o configurar los buffers y la memoria, si es que se tiene autoridad para reconfigurar el server...
Si vas a trabajar con un host compartido, olvídalo. No te dan nada de permisos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #36 (permalink)  
Antiguo 14/05/2015, 09:00
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: consulta con limit es muy lenta

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No en el contexto descripto por ti.
Sólo quedaría ver si es posible trabajar con mejores servidores, o configurar los buffers y la memoria, si es que se tiene autoridad para reconfigurar el server...
Si vas a trabajar con un host compartido, olvídalo. No te dan nada de permisos.
tengo aceso a todo el servidor,pero de cuanto tiempo se podria ganar no creo que pueda bajar tanto?
saludos.
  #37 (permalink)  
Antiguo 14/05/2015, 09:08
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: consulta con limit es muy lenta

aumentado las capacidades a tu server sip, digamos tu tabla con 100,000 registros(que es muy poco) tiene un tamaño de 5 GB entonces poner memoria ram de 5GB al server y asignarla toda al mysql(funciona igual que sql server verdad??) entonces tu dataset sera reservado en memoria ram en lugar de hacer IO y las consultas seria mas rapidas......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #38 (permalink)  
Antiguo 14/05/2015, 12:11
 
Fecha de Ingreso: agosto-2011
Mensajes: 306
Antigüedad: 12 años, 8 meses
Puntos: 5
Respuesta: consulta con limit es muy lenta

Vale muchas gracias a todos por vuestras contestaciones, ya sabiendo las opciones que tengo intentare procesar la mas correcta, saludos.

Etiquetas: lenta, limit, registro, select, 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 18:20.