|
From: Juan C. C. <jua...@et...> - 2004-05-07 01:07:26
|
Saludos lista: Estuve haciendo unas pruebas de la consulta que realice para desplegar los valores mensuales por cada a=C3=B1o. Estos fueron los resultados: Equipo: K6-II 500 MHZ, 196 M RAM. Mandrake Linux 9.2 (kernel 2.4.22) Postgres 7.3.4 Query: SELECT nptipcon.tipcon, nptipcon.destco, nm_conce.codcon, nm_conce.descon, nmd_2003.mes, sum(nmd_2003.valor) as total FROM nmc_2003, nmd_2003, nm_conce, nptipcon, nm_perio WHERE ( (nmd_2003.codcon=3Dnm_conce.codcon) AND (nm_conce.tipcon=3Dnptipcon.tipcon) AND (nmd_2003.codemp=3Dnmc_2003.codemp) AND (nmd_2003.numper=3Dnmc_2003.numper) AND (nmd_2003.mes=3Dnmc_2003.mes) AND (nmd_2003.numper=3Dnm_perio.numper)) GROUP BY nptipcon.tipcon, nptipcon.destco, nm_conce.codcon, nm_conce.descon, nmd_2003.mes ORDER BY nptipcon.tipcon, nm_conce.codcon, nmd_2003.mes Resultado: 1. Cuando se realiza directamente la consulta sin vista arroja un tiempo de 80290.48 mseg 2. Despu=C3=A9s de crear la vista y realizar la misma consulta arroja tiemp= os de 78438.14 mseg. Estos valores son =C3=BAnicamente el tiempo que se toma Postgres (no incluy= e PHP) Conclusi=C3=B3n: Tomando estos datos nos podemos dar cuenta que para ver el consolidado, la impresi=C3=B3n y la gr=C3=A1fica el usuario tendr=C3=A1 que= esperar un tiempo aproximado de 79*3 seg =3D 2 minutos 37 seg !!!. Yo sigo opinando que es mucho mejor realizar la consulta en el primer pantallazo (consolidado) y almacenar los resultados en una matriz en la sesi=C3=B3n, luego de esto la opci=C3=B3n de impresi=C3=B3n y de gr=C3=A1fi= ca =C3=BAnicamente deber=C3=A1n tomar los datos de la sesi=C3=B3n sin necesidad de consultar a Postgres que como vemos es bastante demorado.=20 Acerca de los datos de sesi=C3=B3n: Cuando se crea una sesi=C3=B3n el dato = que =C3=BAnicamente viaja por la conexi=C3=B3n es decir en la cookie es el id d= e la sesi=C3=B3n y no los datos almacenados dentro de la sesi=C3=B3n (esto lo po= demos ver cuando en vez de enviar la sesi=C3=B3n por una cookie, la enviamos por = el m=C3=A9todo GET), estos datos est=C3=A1n almacenados en la memoria del serv= idor, por lo cual sea cual sea el tama=C3=B1o de los datos almacenado, da la mism= a manejar solo un dato en la sesi=C3=B3n que manejar una matriz de un tama=C3= =B1o bastante grande (esto es teniendo en cuenta solo el tiempo de manejo de sesi=C3=B3n). Posible Problema: que alg=C3=BAn usuario ingrese un dato en la base de dato= s mientras que se esta consultando la captura realizada antes del ingreso nuevo es decir en la variable de sesi=C3=B3n.=20 Posible soluci=C3=B3n: se pone en estudio. Espero que mediten sobre lo anterior, es tan solo una sugerencia y si estoy equivocado por favor me lo hagan saber. Atentamente Juan Carlos Castellanos --=20 Miembro GLUD http://glud.udistrital.edu.co Usuario Linux No.354570 |