Hola Cesar, gracias por contestar. Lo voy a probar.
Tengo un índice sobre la PK MiTabla.Id. Supongo que es eso correcto, verdad? Saludos ricardo aidelman ( socio nº 1545 ) De: [email protected] [mailto:[email protected]] En nombre de César Pistiner Enviado el: miércoles, 01 de abril de 2015 11:08 p.m. Para: GUFA List Member Asunto: [GUFA] UPDATE - SQL Command vs. Seek() + Gather Buenas noches Ricardo, Proba así a ver si mejora: Update MiTabla Set ; Campo1 = MiCursor.Campo1,; Campo2 = MiCursor.Campo2,; Campo3 = MiCursor.Campo3,; Campo4 = MiCursor.Campo4 ; From MiTabla Inner Join MiCursor On MiTabla.Id == MiCursor.Id NOTA: deberías tener índices que te optimicen esto. De todas formas muchas veces a nosotros nos ha pasado que un scan con seek supera ampliamente al update-sql. Saludos, César El 1 de abril de 2015, 21:31, Ricardo Aidelman <[email protected]> escribió: Caballeros: Tengo una tabla libre MiTabla.dbf, con una PK sobre el campo MiTabla.Id (Integer) Tambien tengo un cursor MiCursor, leído con un Select obre MiTabla, donde modifico algunos campos. Hasta ahora actualizaba MiTabla con el Procedure Grabar1(), pero tenía problemas de performance. Hice pruebas con el Coverage, y el Procedure Grabar2() resultó ser infinitamente más veloz. La preguntaes: está mal el comando Update – SQL, o siempre es preferible el Seek() + Gather La tabla que se actualiza tiene 12500 registros y pesa 4.0Mb. El cursor que actualiza la tabla tiene 10 registros Estoy usando VFP9 SP2 Procedure Grabar1() Update MiTabla Set ; MiTabla.Campo1 = MiCursor.Campo1,; MiTabla.Campo2 = MiCursor.Campo2,; MiTabla.Campo3 = MiCursor.Campo3,; MiTabla.Campo4 = MiCursor.Campo4 ; From MiCursor ; Where MiTabla.Id = MiCursor.Id * Tiempo de Proceso: Avg 0.636852 Endproc Procedure Grabar2() Select MiCursor Locate Scan Scatter Fields ; Campo1, Campo2, Campo3, Campo4 Name loReg Select MiTabla If Seek( MiCursor.Id, "MiTabla", "Id" ) Rlock() Gather Name loReg Unlock Endif Select MiCursor EndScan * Tiempo de Proceso: Avg 0.078448 Endproc Muchas gracias ricardo aidelman ( socio nº 1545 ) Se certificó que el correo no contiene virus. Comprobada por AVG - www.avg.es Versión: 2015.0.5863 / Base de datos de virus: 4321/9433 - Fecha de la versión: 01/04/2015 Se certificó que el correo no contiene virus. Comprobada por AVG - www.avg.es Versión: 2015.0.5863 / Base de datos de virus: 4321/9433 - Fecha de la versión: 01/04/2015 ----- Se certificó que el correo no contiene virus. Comprobada por AVG - www.avg.es Versión: 2015.0.5863 / Base de datos de virus: 4321/9437 - Fecha de la versión: 02/04/2015
