Ya no necesitas indagar más por todo internet ya que estás al lugar correcto, tenemos la solución que quieres sin liarte.
Solución:
Asumiendo WHERE columnc = 20
selecciona más de 1000 filas, como mencionó en un comentario, ejecutando eso UPDATE
La declaración debe ser notablemente más rápida que recorrer un conjunto de registros y actualizar sus filas una a la vez.
La última estrategia es un enfoque RBAR (Row By Agonizing Row). La primera estrategia, ejecutar un único (válido) UPDATE
, es un enfoque “basado en conjuntos”. En general, basado en conjuntos triunfa sobre RBAR con respecto al rendimiento.
Sin embargo, sus 2 ejemplos plantean otros problemas. Mi primera sugerencia sería usar DAO en lugar de ADO para ejecutar su UPDATE
:
CurrentDb.Execute stSQL, dbFailonError
Cualquiera que sea la estrategia que elija, asegúrese de columnac está indexado.
El método SQL suele ser el más rápido para las actualizaciones masivas, pero la sintaxis suele ser complicada.
El método VBA, sin embargo, tiene las claras ventajas de que el código es más limpio y el conjunto de registros se puede usar antes o después de la actualización/edición sin solicitar los datos. Esto puede marcar una gran diferencia si tiene que hacer cálculos extensos entre actualizaciones. Además, el conjunto de registros se puede pasar ByRef a funciones de soporte o procesamiento posterior.