Die Frage ist, wieviele Daten denn da so übertragen werden.
Man bedenke, dass der Open je mehrere Netzrequests auslöst.

In der ODBC-Konfig kann man aktivieren(ich glaube Register Server), "SQL Vorablesezugriff", dies reduziert die Requests etwas.

Um genaues zu analysieren, kann man über den ODBC-Manager einen SQL-Trace ziehen, der allerdings extrem verlangsamt.
Hier sieht man dann genau, was da so alles abgeht.

Zusätzlich ist es natürlich immer ein Unterschied, ob man einen SQL zusammenbaut oder mittels Command-Objekt und Parametern arbeitet.

Hier kann man dann auch so verfahren:

dim MyCmd as new ADODB.Command
MyCmd.CommandText = "select * from myfile where key=?"
set MyCmd.ActiveConnection=MyConnection

dim MyRcd as new ADODB.Recordset

MyCmd(0) = "Key"
if MyRcd.State = adStateClosed then
MyRcd.Open MyCmd
else
MyRcd.Requery
endif

Das dauert dann nicht mehr ganz so lange.