Ver Mensaje Individual
  #19 (permalink)  
Antiguo 13/05/2015, 08:56
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: 17 años
Puntos: 2658
Respuesta: consulta con limit es muy lenta

Cita:
Vi por Internet un truco como hacer un select dentro de otro selectivo con join donde el select segundo obtiene los id del rango y luego con join muestra los registros igual al id la verdad que mejora la consulta pero al aplicarle el filtro eliminados=no en el segundo select de la consulta esta se hace aún más lenta.
No creas todo lo que leas en Internet. Muchas veces son soluciones que solo aplican a casos puntuales, o escenartios limitados, y el uso de subconsultas es un arma de doble filo.
Para tu caso, eso es basura pura.

Para el caso, la mejor solución ya te la dieron:

Código MySQL:
Ver original
  1. SELECT * FROM  empresa WHERE id > 99000 ORDER BY id LIMIT 200;
pero tu problema es el campo "eliminado", que tioenes definido como VARCHAR, obviamente en función de tu query:
Código MySQL:
Ver original
  1. SELECT * FROM  empresa WHERE id > 99000 AND eliminado="no" ORDER BY id LIMIT 200;
Por eficiencia, es mejor no hacer validaciones de "SI"/"No", sino usar valores de BIT, BOOLEAN o INT, es decir, validarpor 0 ó 1, que es mucho más rápido.

Modifica la tabla y cambia el tipo de columna a TINYINT o BIT, y asignale DEFAULT '0', y realiza la comparación, por ejemplo:
Código MySQL:
Ver original
  1. SELECT * FROM  empresa
  2. WHERE id > 99000
  3. AND NOT eliminado
  4. ORDER BY id LIMIT 200;
o bien:
Código MySQL:
Ver original
  1. SELECT * FROM  empresa
  2. WHERE id > 99000
  3. AND eliminado = 0
  4. ORDER BY id LIMIT 200;
No estoy seguro de cuanta mejora lograrás, pero dado tu contexto, es lo más que veo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)