Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Lento al abrir tabla (https://www.clubdelphi.com/foros/showthread.php?t=62261)

Vlady 13-12-2008 18:57:05

Lento al abrir tabla
 
Hola amigos del foro acudo a uds de nuevo.
Tengo el siguiente inconveniente cuando abro una tabla de 12.000 registros (para mi concepto pequeña) el tiempo de espera es demasiado largo y en ocaciones me aparece el error "out of memory", en realidad la abro para luego ponerla en modo de inserción, podria hacer para reducir el tiempo al abrir la tabla y que no me aparezca este error, estoy utilizando firebird 2.0 y delphi 7 y los componentes que estoy utilizando son IBQuery de la paleta interbase, este es el fragmento del codigo donde ser produce el problema
Código Delphi [-]
      --al realizar esta instrucción el abrir existe el problema
      DataM.Cliente.Open;
      if DataM.Cliente.State In [DsBrowse] then
           DataM.Cliente.Insert;
      DBEdit2.SetFocus;

de antemano muchas gracias

poliburro 13-12-2008 20:35:58

Si cliente es una tabla te aconsejo modificar tu programa para que haga uso de querys tanto para consultas como inserciones. Saludos

Delphius 13-12-2008 21:09:26

Me adhiero al comentario de poliburro, es mejor emplear Querys en vez de Tables.
El uso de Tables provoca que se traigan todos los datos cada vez que se abre la tabla.

Deberías además considerar esto:
1. ¿Usas índices?
2. ¿La base de datos es local o remota?¿Está en una red?

Saludos,

Vlady 14-12-2008 01:44:41

Gracias por sus sugerencias, las aplicare, la bd es local y no uso indices

PepeLolo 15-12-2008 00:07:12

Cuando un dataset tiene muchos o pocos registros, lo que recomiendo es incluir una condición en la SQL que no devuelva registros.
Código SQL [-]
SELECT * FROM CLIENTES ID = 0
Si nunca existe un registro con ID = 0, la apertura del dataset es instantaneo y podrás crear multiples registros sin que exista lentitud. Eso sí, vas a incluir una carga masiva de registros, recomiendo que cada 100 registros realices commit, para recuperar la memoria consumida por la transacción

un saludo.

Neftali [Germán.Estévez] 15-12-2008 10:08:45

A veces también hay que tener en cuenta la "anchura" de la tabla. No es lo mismo abrir una tabla con 5 campos, que una que tenga 20 columnas.
Para eso también te puede servir una SQL (Query) donde selecciones sólamente los campos estrictamente necesarios a visualizar.

De todas formas si va a abrir la tabla para luego utilizar un Insert puedes usar la sentencia TOP o algun filtro que te mimimize los registros.


La franja horaria es GMT +2. Ahora son las 04:59:34.

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