Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-11-2008
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Hace poco tuve que hacer un programa que básicamente hacia un montón de Insert en una tabla de MySql y el proceso tardaba muchísimo (te podías ir a tomar un café ), hasta que descubrí que MySql permite la inserción múltiple, es decir, insertar varios registros de una vez.

Por ejemplo (ayuda de MySQL):
Código SQL [-]
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

Podrías probar a construir tu mismo la consulta e insertar todos los productos de la factura en una sola sentencia.
Responder Con Cita
  #2  
Antiguo 19-11-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Y no tendrá que ver con las transacciones?
Yo trabajo con Firebird y depende de si utilizo Commit o CommitRetaining, la cosa cambia mucho.
Código Delphi [-]
while (no_se_terminen_los_datos) do
begin
   if (not MD.ZAsientos.Transaction.InTransaction) then
      MD.ZAsientos.Transaction.StartTransaction;
   MD.ZAsientos.SQL.Clear;
   MD.ZAsientos.SQL.Text:='INSERT INTO asientos (fecha,cuenta,debe,haber,saldo,comentario,numero,comp,numcom,codprov) '+
   'VALUES (:fecha,:cuenta,:debe,:haber,:saldo,:comentario,:numero,:comp,:numcom,:codprov)';
   MD.ZAsientos.ParamByName('fecha').Value:=StrtoDate(fecha.text);
   MD.ZAsientos.ParamByName('cuenta').Value:=MD.DetalleImputa.Value;
   MD.ZAsientos.ParamByName('Debe').Value:=MD.DetalleNetograv.Value;
   MD.ZAsientos.ParamByName('comentario').Value:=comentario;
   MD.ZAsientos.ParamByName('Numero').value:=nasiento;
   MD.zAsientos.ParamByName('Comp').value:=MD.DetalleTipo.Value;
   MD.zAsientos.ParamByName('Numcom').Value:=MD.DetalleNumcom.Value;
   MD.zAsientos.ParamByName('Codprov').Value:=MD.DetalleCod_prov.Value;
   MD.ZAsientos.ExecSQL;
   MD.ZAsientos.Transaction.Commit;
end;

También puede tener que ver con los triggers que ejecute al insertar en esa tabla.

Última edición por duilioisola fecha: 19-11-2008 a las 14:21:25.
Responder Con Cita
  #3  
Antiguo 19-12-2008
heymatias heymatias is offline
Registrado
 
Registrado: dic 2008
Posts: 7
Poder: 0
heymatias Va por buen camino
Hola, soy nuevo en el foro y nuevo con Delphi. Pero laburo con MySQL desde hace años y te aseguro que hacer varias insersiones es muchísimo más lento que hacer una inserción enorme que haga todo.

Podés hacer una consulta del tipo

INSERT INTO.... ; INSERT INTO...;INSERT INTO.... ; INSERT INTO...;

... y así. La idea es que mover el motor de MySQL cuesta un poco, y si vos hacés todas las inserciones por separado lo estás moviendo cada vez, en cambio, si le dás todas las inserciones para hacer él se encarga de optimizar las mismas.

Cuanto más puedas delegar al motor mejor, está muy bien programado y nada de lo que vos programes va a ser más rápido.


Y fijate de hacer transacciones, porque si grabás la factura y no los asientos vas a tener problemas.


Saludos, matías.-
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
MySql y Delphi Lento nasedo MySQL 6 04-08-2007 05:35:06
Prepare lento en Firebird.. y en MySQL?? xander MySQL 11 01-11-2006 03:02:36
Un Insert muy lento......... sitrico Conexión con bases de datos 9 30-05-2005 15:52:21
Mysql lento en Win Me y rapido en win 98 miguelb Windows 0 03-02-2005 21:39:00
Mysql lento en Win Me y rapido en win 98 miguelb MySQL 0 30-12-2004 02:22:16


La franja horaria es GMT +2. Ahora son las 08:19:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi