<font face="tahoma,sans-serif">Según la documentación de MySQL y de SQLite (perdon, no tengo a mano los enlaces, pero lo he leido infinidad de veces) para hacer muchos insert se recomienda utilizar el siguiente procedimiento:</font><div>
<font face="tahoma,sans-serif">1.- Abrir Transaccion</font></div><div><font face="tahoma,sans-serif">2.- Query.SQL con parametros</font></div><div><font face="tahoma,sans-serif">3.- Query.Prepare <= aqui corre la parte mas costosa, el optimizador de querys</font></div>
<div><font face="tahoma,sans-serif">4.- loop con asignación de parametros (byname no debiese retrasar tanto la operacion) y Query.ExecSQL</font></div><div><font face="tahoma,sans-serif">5.- Commit de la Transaccion</font></div>
<div><font face="tahoma,sans-serif"><br></font></div><div><font face="tahoma,sans-serif">Las veces que lo he utilizado, tanto con MySQL como con MS SQL Server 2005 (componentes AnyDAC en Delphi 7), la transacción y los parámetros marcaban la diferencia, armando el texto cada vez resultaba entre 3 y 5 veces mas lento en el proceso general.</font></div>
<div><font face="tahoma,sans-serif"><br></font></div><div><font face="tahoma,sans-serif">Espero que te sirva,</font></div><div><font face="tahoma,sans-serif">Saludos,</font></div><div><font face="tahoma,sans-serif">Martín<br>
</font><br><div class="gmail_quote">2012/10/10 Maxi <span dir="ltr"><<a href="mailto:maximiliano.duarte@gmail.com" target="_blank">maximiliano.duarte@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
El día 10 de octubre de 2012 06:02, Jose Antonio. Cuello Principal<br>
<<a href="mailto:jcuello@artextrading.com">jcuello@artextrading.com</a>> escribió:<br>
<div><div class="h5">> Hola, los componentes eran Zeos (no recuerdo la versión) con conexión a<br>
> firebird y entorno Delphi (5 ó 6)<br>
><br>
> La pantalla no tenía mucha cosas, un progresbar era lo único que requería<br>
> refresco.<br>
><br>
> y las tablas (entre 8 y 10) tenían bastantes registros pq contenían u<br>
> historico de 3 ó 4 años.<br>
> Siento no ser más claro, pero hace ya unos añitos del tema.<br>
> Gracias, por tus respuestas.<br>
> Un saludo<br>
><br>
> ________________________________<br>
> De: "José Mejuto" <<a href="mailto:joshyfun@gmail.com">joshyfun@gmail.com</a>><br>
> Para: "Spanish version of Lazarus List"<br>
> <<a href="mailto:lazarus-es@lists.lazarus.freepascal.org">lazarus-es@lists.lazarus.freepascal.org</a>><br>
> Enviados: Miércoles, 10 de Octubre 2012 9:40:46<br>
><br>
> Asunto: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona<br>
><br>
> El 10/10/2012 9:13, Jose Antonio. Cuello Principal escribió:<br>
><br>
>> Siguiendo con este tema, siempre sospeche que el problema eran los<br>
>> numerosos parambyname que se ejecutaban durante el proceso. Es decir,<br>
>> que no era un problema de base de datos sino del proceso a la hora de<br>
>> traspasar los datos. El caso es que mi supervisor de entonces no me dejó<br>
>> hacer pruebas y me lo hizo cambiar, luego pase a otras cosas y ahí quedo<br>
>> el tema.<br>
>> Es posible que al tener que hacer ejecutar muchos ParambyName (entre 10<br>
>> o 15 no recuerdo exactamente cuantos eran) por cada insert hacían que el<br>
>> proceso tardara más que si montabas un string con la sentencia.<br>
>><br>
><br>
> Hola,<br>
><br>
> No lo creo, veo más posible algún tipo de bug en los componentes que el<br>
> propio hecho de pasar parámetros "byName". Aunque los "byName" son<br>
> costosos, son locales y lo más lento debería ser en envio/recepción de<br>
> datos al hacer los prepare. Puede darse el hecho de que un bug realizara<br>
> el prepare cada vez que se ejecutaba el SQL aunque este no se hubiera<br>
> modificado, por lo tanto tendríamos la carga normal del prepare y<br>
> añadidos todos los "byName" aunque multiplicar por 4 el tiempo de<br>
> proceso me parece excesivo.<br>
><br>
> Sería interesante hacer algunas pruebas... Si tengo un rato haré un test<br>
> con una BD.<br>
><br>
><br>
><br>
> _______________________________________________<br>
> Lazarus-es mailing list<br>
> <a href="mailto:Lazarus-es@lists.lazarus.freepascal.org">Lazarus-es@lists.lazarus.freepascal.org</a><br>
> <a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
><br>
><br>
> _______________________________________________<br>
> Lazarus-es mailing list<br>
> <a href="mailto:Lazarus-es@lists.lazarus.freepascal.org">Lazarus-es@lists.lazarus.freepascal.org</a><br>
> <a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
><br>
<br>
<br>
</div></div>Ahi esta el tema del tiempo, el objeto ttable para motores sql no<br>
estaba aconsejado, incluso hoy tampoco lo aconsejan, porque esta por<br>
compatibilidad.<br>
el TTable trae a memoria casi toda la tabla y no es eficiente en las<br>
actualizaciones, siempre en un entorno cliente servidor es mejor usar<br>
Querys<br>
<div class="im HOEnZb"><br>
--<br>
El que pregunta aprende, y el que contesta aprende a responder.<br>
<br>
No a la obsolecencia programada:<br>
<a href="http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html" target="_blank">http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html</a><br>
<br>
Linux User #495070<br>
<a href="http://domonetic.com/blog" target="_blank">http://domonetic.com/blog</a><br>
<br>
</div><div class="HOEnZb"><div class="h5">_______________________________________________<br>
Lazarus-es mailing list<br>
<a href="mailto:Lazarus-es@lists.lazarus.freepascal.org">Lazarus-es@lists.lazarus.freepascal.org</a><br>
<a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div><span style="font-family:tahoma,sans-serif">Try not to become a man of success but rather to become a man of value. <i>Albert Einstein</i></span></div>
<br>
</div>