No veo que tanta mas velocidad necesitas el llenar un recordset, cargo un recordset con miles de registro mas rápido que un pestañeo y además con eso siempre tengo un recordset mas actualizado. Así que una diferencia significativa de velocidad no le veo.
En todo caso puedes poblar tu recordset y dejarlo en memoria, cuando quieras buscar algo usar .find me parece, la verdad ya ataco directamente a la BD y siempre traigo el recordset ya listo para consumir pero si, creo que con find , esto con ADO claro.
Lo otro que puedes hacer es que una vez que leas el recordset lo vuelques a un array o a una coleccion y mantendrías esa coleccion o array en memoria.
Agrego algo mas, yo hago búsquedas mientras se teclea ya sea de clientes o de artículos usando like en el sql, y recuerda que el like pierde el índice, o sea, no lo usa y por lo tanto pierde velocidad y aun así es muy veloz, claro, no hablo de una tabla con decenas de miles de registros, en ese caso ya no lo hago por cada pulsación de tecla sino luego de un enter.