Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Demora en ir al ultimo registro para hacer insert (https://www.clubdelphi.com/foros/showthread.php?t=18501)

JoanKa 14-02-2005 18:14:39

Demora en ir al ultimo registro para hacer insert
 
Holas a todos.

Tengo una tabla articulos que tiene 59129 registro, pero cuando quiero insertar un nuevo registro me parece que se demora mucha para ir al ultimo registro, solo por probar he puesto 2 TDBedit y 2 TButton (Ingresar, Grabar).
Aca va este codigo:

procedure TForm1.IngresarClick(Sender: TObject);
begin
IBQuery1.Last;
IBQuery1.Insert;

txt_codigo.SetFocus;
end;

procedure TForm1.GrabarClick(Sender: TObject);
begin
IBQuery1.Post;
IBTransaction1.Commit;
end;

Lo que pasa cuando le presiono sobre Button1Click se demora un tiempo de mas o menos 30 seg. para que me ubique el foco en el txt_codigo, y luego ingreso el txt_direccion y cuando le presiono en el segundo boton (Grabar) lo registra muy bien los datos en la base de datos.

Que puede ser para que no se demore mucho
Uso:
IBDatabase1
IBTransaction1
IBQuery1
IBUpdateSQL1
DataSource1

Firebird 1.5

Gracias

Gydba 14-02-2005 18:23:52

Hola,

Quizás es un problema de índices, pero de todas formas los IBX siempre me demostraron ser lentos cuando se utilizan Locates u operaciones de navegación sobre los registros de una tabla grande. Podrías probar con otros componentes, comprobar las estructuras de las tablas o bien realizar una consulta más óptima, digamos trayendo únicamente el último registro sin utilizar un Last.

El problema es que la acción Last en si, al igual que Locate, recorren los registros como una suerte de Fetch All por lo que tarde o temprano la lentitud se va a hacer más notoria.

Saludos!

roman 14-02-2005 18:26:47

Como dice Gydba, el problema es que una operación como Last es muy costosa ya que implica traer todos los registros al cliente. Y éste es un problema con cualquier servidor. Pero por otro lado, no es necesario ir al último registro para insertar uno. Simplemente omite la llamada a Last antes del Insert.

// Saludos

JoanKa 14-02-2005 18:46:31

Ok, perfecto hice eso que me dijeron y me fue de maravilla.

Ya hice todo este pequeño mantenimiento de ingreso,consulta,modificacion y eliminacion, PERO AHORA QUISIERA PROBARLO EN RED, QUE DEBO HACER PARA QUE OTRO USUARIOS EN MI LAN PUEDAN ACCEDER A ESTE MANTENIMIENTO.
TODO ESTO LO TENGO EN MI PC LOCAL LA CUAL LA BASE LO TENGO LOCALIZADO EN C:/Proyecto/Base_Datos/mantenimiento.fdb el localhost cuando lo he creado la BD en Firebird fue de 127.0.0.1 con el usuario SYSDBA y clave masterkey.

Gracias.


La franja horaria es GMT +2. Ahora son las 22:07:56.

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