Foros del Web » Programando para Internet » PHP »

Guardar el resultado de una consulta

Estas en el tema de Guardar el resultado de una consulta en el foro de PHP en Foros del Web. Tengo una aplicacion que genera una serie de listados. El problema es que estos listados son cada vez mas largos y la consulta a la ...
  #1 (permalink)  
Antiguo 20/10/2006, 02:04
 
Fecha de Ingreso: enero-2002
Mensajes: 417
Antigüedad: 22 años, 3 meses
Puntos: 0
Guardar el resultado de una consulta

Tengo una aplicacion que genera una serie de listados. El problema es que estos listados son cada vez mas largos y la consulta a la bbdd genera mas resultados. Cuando voy moviendome por los resultados (a la hora de paginar, de ordenar...) hago de nuevo la consulta con otros parametros. Pero quisiera moverme sobre la consulta ya hecha mostrando los resultados pedidos, pero sin volver a correrla para que vaya mas rapido. ¿Es esto posible? ¿Como se podria hacer? He pensado en una variable de sesion, pero los resultados pueden ser enormes y no creo que sea una buena solucion.
Muchas gracias por todo.
  #2 (permalink)  
Antiguo 20/10/2006, 08:53
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
En vez de pedir TODOS los resultados de nuevo al servidor, podés mejor hacer una consulta con LIMIT, y antes una consulta SELECT COUNT(*) para saber los resultados totales. La cantidad de resultados totales la guardás en una sesión.

En cuanto a lo que serían las "páginas" anteriores, podés usar un cache gracias a ob_start(), guardar el resultado generado en un archivo temporal, y mostrar el contenido de ese archivo en vez de hacer la consulta de nuevo.
En las FAQ tenés más detalles de cómo generar un caché con php.


Saludos.
  #3 (permalink)  
Antiguo 20/10/2006, 09:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Mysql bien optimizado ya realiza caché de consultas el mismo motor de Mysql. No confundir con caché de "páginas" .. ¿Tu tienes acceso a la configuración de Mysql?.

Sobre el caché de páginas .. cualquier sistema de gestión de motor de plantillas incorpora esas funcionalidades.

Un ejemplo en castellano de un sistema completo:

NokTemplate
http://www.jpw.com.ar/noktpl.php

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 21/10/2006, 06:14
 
Fecha de Ingreso: enero-2002
Mensajes: 417
Antigüedad: 22 años, 3 meses
Puntos: 0
Nunca he usado el sistema este de cache de paginas, y no se si sera lo k busco.. seria mas bien un "cache de consultas" o algo asi... Y si, tengo acceso a la configuracion de mysql, pero es algo temporal, pues la version definitiva debe correr sobre SQL Server 2000, con lo que el invento se me estropea .
Muchas gracias a todos.
  #5 (permalink)  
Antiguo 21/10/2006, 22:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. el caché de páginas se comportaría igual...

Ejemplo:
Si yo pido para los resultados de una consulta SQL dada .. un URL tipo:
www.tal.tal/resultados.php?registros=todos

Y para generar esa página se va a realizar cierta consulta SQL .. Esa quedaría en caché.

Si posteriormente voy a pedir el mismo URl .. el sistema de gestión de caché .. me devuelve esa misma página .. así que ni se ejecutaría nuevamente la consulta SQL que tenía en "resultados.php?registros=todos" ..

Creo que dado que estos sistemas de gestión de plantillas ya los tienes hechos .. no te cuesta nada probarlos y evaluar que tanto se optimiza el n° de consultas a tu BBDD usando el sistema de caché convencional de páginas o el de consultas.

Por otro lado .. si estudias el sistema de caché en sí .. para consultas "SQL" sería lo mismo .. de hecho como te comenté la mayoría de motoros de BBDD ya lo hacen (Mysql lo hace) .. SQL Server tal vez lo implemente también. Se basan en el mismo principio:

Si llego al "motor" de BBDD a pedirle:
SELECT * FROM tabla

y gestionando caché .. se almacena el resultado en forma temporal por un tiempo determinado (activado ese "caché") .. si luego voy a pedirle la misma sentencia SQL .. me entregará su resultado ya obtenido previamente.

OJO con los sistema de caché en general .. no sé que tan viable será que hagas un caché por ahorrarte algunas consutlas SQL como de los problemas o "daños colaterarles" que vas a tener si necesitas información "fresca" ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 22/10/2006, 00:30
 
Fecha de Ingreso: enero-2002
Mensajes: 417
Antigüedad: 22 años, 3 meses
Puntos: 0
Ufff, vaya respuesta, muchisimas gracias. Y voy a probar lo del cache de paginas, que es algo de lo k ni habia oido hablar. SI no me vale para esto, para el futuro es muy interesante. Gracias a todos xavales.
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 13:44.