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