Ver Mensaje Individual
  #1  
Antiguo 26-05-2005
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Reputación: 22
sitrico Va por buen camino
Unhappy Un Insert muy lento.........

Estoy trabajando en los reportes de una aplicación y opté por usar un procedimiento para generar una tabla local temporal (BDE) para almacenar las lineas del reporte y luego generar la salida usando un TQuickRep.

Todo funciona razonablemente bien pero el rendimiento es patetico, haciendo diversas pruebas logre detectar que si quito la linea de "ExecSQL" que corresponde al insert de los datos en la tabla temporal el rendimiento cambia drasticamente (desgraciadamente no se genera el reporte ) pero agregar unos 400 registros en el archivo temporal toma hasta 20seg (si quito la linea "ExecSQL" todo el proceso dura menos de 1 seg) por lo que asumo que mi problema de rendimiento está directamente asociado al insert

Este es el código: (fDataMod.Q1 es un tQuery conectado a un TDatabase local).


Código Delphi [-]
With fDataMod.Q1 do
   Begin
   Sql.Clear;
   Sql.Add('Insert into '+CuotedStr(FName));
   Sql.Add('(CodMay, CodAux, Descrip, Ref, Concep, NumComp, FchComp,');
   Sql.Add(' M1, M2, M3, M4, LinTop, Bold, IdDetalle ) Values');
   Sql.Add('(:CodMay, :CodAux, escrip, :Ref, :Concep, :NumComp, :FchComp,');
   Sql.Add(' :M1, :M2, :M3, :M4, :LinTop, :Bold, :IdDetalle)');
   ParamByName('CodMay').AsString := Datos.CMay;
   ParamByName('CodAux').AsString := Datos.CAux;
   ParamByName('Descrip').AsString := Datos.Desc;
   ParamByName('Ref').AsString := Datos.Ref;
   ParamByName('Concep').AsString := Datos.Conc;
   ParamByName('NumComp').AsString := Datos.NComp;
   ParamByName('FchComp').AsDate := Datos.FComp;
   ParamByName('M1').AsCurrency := Datos.M1;
   ParamByName('M2').AsCurrency := Datos.M2;
   ParamByName('M3').AsCurrency := Datos.M3;
   ParamByName('M4').AsCurrency := Datos.M4;
   ParamByName('LinTop').AsInteger := Datos.LTop;
   ParamByName('Bold').AsBoolean := Datos.Bold;
   ParamByName('IdDetalle').AsInteger := Datos.IdDet;
   ExecSQL;
   End;
End;

¿ El uso de Parametros afecta (mucho) el rendimiento ?
¿ Que puedo hacer para acelerar el proceso de inserción ?

Gracias
__________________
Sitrico

Última edición por sitrico fecha: 26-05-2005 a las 23:34:23.
Responder Con Cita