Die Performance lässt sich ggf. durch ClientCursor noch steigern.

Empfehlenswert ist auch der Einsatz eines CommandObjekts mit ParameterMarkern, wobei CA die Anzahl und den Typ der Parameter auch noch selber lädt.

with MyCommand
.CommandText="Select ... where Key=?"
set .ActiveConnection=MyConnection
end with

MyCommand(0) = "Key"
with MyRecordset
if .State=adStateClosed then
MyRecordset.Open MyCommand
else
MyRecordset.Requery
endif
end with

Zusätzlich kann man in der ODBC-Konfig auch noch das Flag "Daten vorab laden" setzen, man spart dadurch zusätzliche Netzrequests.

Beim Einsatz von ClientCursor lassen sich auch mehrere Veränderungen in einem Recordset durchführen (Update/Addnew/Delete), die dann mit einem Request "UpdateBatch" nach oben geladen werden.
Durch .Filter=adFilterError (oder ähnlich) lassen sich dann fehlerhafte Updates gezielt behandeln.