Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-05-2005
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 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
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 16:40:26.


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
Copyright 1996-2007 Club Delphi