Ver Mensaje Individual
  #1  
Antiguo 17-08-2011
juanlito juanlito is offline
Miembro
NULL
 
Registrado: ago 2011
Ubicación: Jerez de la Frontera
Posts: 14
Reputación: 0
juanlito Va por buen camino
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;
el codigo sql del query2 es una simple consulta como la siguiente

Código SQL [-]
SELECT PHONE.TELNO AS TELNO, PHONE.ADDRESS AS ADDRESS, TAG26.RPTIME AS RPTIME, TAG26.STARTTIME AS STARTTIME, TAG26.DURATTIME AS DURATIME, TAG26.SUMCOIN AS SUMCOIN, TAG26.DIALNO AS DIALNO
FROM PHONE, TAG26
WHERE PHONE.IDNO=TAG26.IDNO;

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.
Responder Con Cita