Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PostgreSQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=42)
-   -   Postgres, Zeos y Delphi 7 (https://www.clubdelphi.com/foros/showthread.php?t=41445)

quali 15-03-2007 19:36:47

Postgres, Zeos y Delphi 7
 
Hola Gente.

Estoy trabajando con Deplhi 7 y Postgres 8.1, conectando a la base de datos con Zeos.

Estoy desarrollando una aplicación que tiene dos tablas muy grandes (300 mil registros aprox. cada una).

En tiempo de diseño, si en un form pongo un componente ZTable, especifico su conexión y un tablename, se supone que haciendo un doble click sobre el ztable puedo agregar cuales campos de la tabla quiero ver. No veo nada si la tabla esta cerrada. Y si abro la tabla (poniendo la propiedad Active en true desde el ObjectInspector), al parecer se leen todos los registros de la tabla antes de abrirla. O por lo menos, me quedo mirando el relojito de arena un buen rato hasta que recupero el control.
Cuando ejecuto la aplicación, pasa lo mismo al abrir las tablas. Lo hago con un simple tabla.Open, y si es una de las tablas grandes puedo esperar mas de cinco minutos.

No se que puede estar pasando, mi sensación es que se leen todos los registros de la tabla antes de que se abra. Además, veo con el administrador de recursos del Windows como va creciendo el consumo de memoria.

Vale aclarar que la base de datos está instalada en un servidor y la accedo desde otra maquina.

Si hago una consulta SQL sobre la base de datos, esta se ejecuta muy eficientemente, por lo que no creo que sea un tema de performance del servidor.

Agredeceré cualquier comentario.

Saludos

luisgutierrezb 15-03-2007 20:38:07

Generalmente los componentes table leen TODOS los registros a memoria, la recomendacion es que uses puro query para obtener datos especificos

Caral 15-03-2007 20:42:10

Hola quali
El Ztable trae todos los registros y se torna lenta, el zquery, trae solo lo que te interese, es mucho mas eficiente, te recominedo que cambies los ztable por zquery y que le asignes cantidad de registros a traer por consulta, esto agilizara todo, aunque me parece raro que pase esto con zeos.
saludos

quali 15-03-2007 22:41:39

Ya lo resolví
 
Gracias a todos por las respuestas.
Encontré la solución acá: http://www.clubdelphi.com/foros/showthread.php?t=35579
Como bien dicen ustedes, al usar Ztables se hace un select *
Pero poniendo la propiedad tablename igual a : nombreTabla limit xx, donde xx es la cantidad de registros que quiero que recuperar, anda barbaro.

No quería usar querys ya que en mi interface intento asociar componentes (un dbgrid por ej) directamente con la bd y hacer inserciones. Con un query puedo hacer eso??

Saludos


La franja horaria es GMT +2. Ahora son las 02:56:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi