FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Optimizacion De Rendimiento
Buenas a todos,
Soy nuevo en el foro y tengo un problema(como casi todos los nuevos) Tengo una aplicacion que accede a una BD de access, he realizado las consultas y el codigo y me funciona sin errores, el problema es que en la tablas hay muchos registros, en una de ellas unos 114000 y en otra unos 270000, debido a esto la ejecuccion de mi codigo se eterniza hasta limites increibles, media hora para un codigo como el siguiente Código:
Datamodule1.Query2.Active:=true; datamodule1.Query2.First; while not(datamodule1.Query2.Eof) do begin try datamodule1.Tbtic.Insert; datamodule1.Tbtic.FieldByName('telno').AsString:=datamodule1.Query2.fieldbyname('telno').AsString; datamodule1.Tbtic.FieldByName('duratime').AsString:=datamodule1.Query2.fieldbyname('duratime').AsString; datamodule1.Tbtic.FieldByName('address').AsString:=datamodule1.Query2.fieldbyname('address').AsString; datamodule1.Tbtic.FieldByName('rptime').AsDateTime:=datamodule1.Query2.fieldbyname('rptime').AsDateTime; datamodule1.Tbtic.FieldByName('sumcoin').AsFloat:=datamodule1.Query2.fieldbyname('sumcoin').AsFloat; datamodule1.Tbtic.FieldByName('dialno').AsString:=datamodule1.Query2.fieldbyname('dialno').AsString; cad:= copy(datamodule1.Query2.fieldbyname('starttime').AsString,7,2)+'/'+copy(datamodule1.Query2.fieldbyname('starttime').AsString,5,2)+'/'; cad:=cad+ copy(datamodule1.Query2.fieldbyname('starttime').AsString,0,4)+' '+copy(datamodule1.Query2.fieldbyname('starttime').AsString,9,2)+':'; cad:=cad+ copy(datamodule1.Query2.fieldbyname('starttime').AsString,11,2)+':'+copy(datamodule1.Query2.fieldbyname('starttime').AsString,13,2); fecha:=strtodatetime(cad); datamodule1.Tbtic.FieldByName('starttime').AsDateTime:=fecha; numero_largo:=datamodule1.Query2.fieldbyname('dialno').AsString; posicion:=(pos('F',numero_largo)); if posicion<> 0 then begin numero:= copy(numero_largo,0,posicion-1); end else begin numero:=numero_largo; end; datamodule1.Tbtic.FieldByName('dialno').AsString:=numero; datamodule1.Tbtic.Post; except showmessage('No se ha podido guardar con exito'); end; datamodule1.Query2.Next; end;
no se que hacer, si alguien me dice que migre todo de access a otro creo que lo hare, uso access porque es la BD que me encontre y en la que despues he ido agregando mas tablas y registros, pero ahora tengo este problema. Me gustaria alguna respuesta en la que no tuviese que migrar los datos, pero Agradeceria cualquier ayuda. Muchas Gracias Última edición por juanlito fecha: 17-08-2011 a las 11:02:05. |
#2
|
||||
|
||||
Hola.
El problema que estás teniendo es normal al usar bases de datos de escritorio que cuantos más registros tienen el rendimiento cae en picado. Por aquí seguramente te van a recomendar que te pases a firebird. Es una buena opción pero con el problema de que seguramente tendrás que cambiar algo de código de tu aplicación porque la forma idonea de usar este tipos de bases de datos es con instrucciones sql y no hacer uso de componentes ttable. Otra opción sería cambiar a firebird y buscar componentes ttable para esta base de datos, que los hay, para que tengas que cambiar el mínimo de código posible. Saludos
__________________
Be water my friend. |
#3
|
|||
|
|||
Muchas gracias por tu respuesta Newtron.
Imaginaba el cambio por ti propuesto, muchas gracias. una consulta. Si cambio a Firebird, puedo usar los componentes de interbase que me trae mi delphi 7?? si pudiese usar esos componentes posiblemente casi que no tendria que cambiar mi codigo, solo enlazar dichos componentes con firebird.(no he usado nunca firebird y no se si puedo hacer esto) A ver si alguien me da solucion con access sino me pondre a esto. |
#4
|
||||
|
||||
Cita:
Saludos
__________________
Be water my friend. |
#5
|
||||
|
||||
Hola juanlito y bienvenido a los foros de Club Delphi.
Cita:
Te pongo unos enlaces que te servirán. (Uno se refiere a Interbase pero sirve para Firebird igualmente) . Delphi conectar Firebird con IBX . Interbase e IBX Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 17-08-2011 a las 12:39:36. |
#6
|
|||
|
|||
Muchas gracias.
Pues al lio me pongo, mientras esperaba respuestas he estado viendo un post en el que caral explicaba la instalacion y conexion basica con firebird. Una ultima question, en el equipo donde tendria que ir instalado el servidor, tengo un MS SQL SERVER 2005 corriendo para una aplicacion externa de uso de mi trabajo. Puedo instalar firebird sin ningun tipo de conflicto con MS SQL SERVER? tendre problema con los puertos o algo parecido? Es que para probar que gane en rendimiento puedo instalar firebird en mi equipo local pero luego tendre que usarlo para todos los usuarios en el servidor, y no quiero migrar toda la bd y luego tener problemas de incompatibilidades. Preguntareis porque no uso MS SQL SERVER en vez de firebird, posiblemente porque firebird es del que he recibido respuesta optima para mejor mi rendimiento y ademas visitando el foro antes de preguntar he observado que era el mas usado por aqui. Gracias |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Optimización! Optimización! | PiornoCKA&G | Varios | 1 | 31-12-2006 20:45:30 |
Optimización Rendimiento dB | amesoft | SQL | 1 | 05-08-2006 06:26:37 |
optimizacion del SQL | seb@ | SQL | 1 | 22-09-2004 19:55:24 |
Optimizacion | manuelpr | Conexión con bases de datos | 3 | 30-07-2004 17:26:24 |
Rendimiento y optimizacion de una aplicacion | erickperez6 | Varios | 2 | 10-09-2003 01:12:32 |
|