Ver Mensaje Individual
  #10 (permalink)  
Antiguo 08/03/2010, 09:13
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: Mejorar rendimiento SQL

El paginado se puede resolver de dos modos:
1. Por programación, procesando toda la tabla devuelta. Eso es asunto del lenguaje y en definitiva puede recargar un poco las comunicaciones si los registros son muy largos, y la cantidad devuelta demasiado excesiva.
2. Usando la cláusula LIMIT offset, count, pero requiere la ejecución de una consulta diferente para cada página de resultados.
Código MySQL:
Ver original
  1. SELECT DISTINCT(p.id), p.nombre, p.url
  2. FROM provincia p INNER JOIN empresa e USING(id_provincia)
  3. WHERE e.activado='1'
  4. LIMIT 100;
o bien
Código MySQL:
Ver original
  1. SELECT DISTINCT(p.id), p.nombre, p.url
  2. FROM provincia p INNER JOIN empresa e USING(id_provincia)
  3. WHERE e.activado='1'
  4. LIMIT 0,100;
te devuelve lo mismo: los primeros 100 resultados.
Para obtener los siguientes 100 sería:
Código MySQL:
Ver original
  1. SELECT DISTINCT(p.id), p.nombre, p.url
  2. FROM provincia p INNER JOIN empresa e USING(id_provincia)
  3. WHERE e.activado='1'
  4. LIMIT 101, 100;
El problema es que en cada bloque deberías ir cambiando el offset, que representa desde cuál registro devolverá. Y creo que no se puede pasar como parámetro, sino que debe ser una constante. Pero hay que probar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)