I ended up selecting a small set of data from my recordset using the following logic
Base Query
If not end or beginning of recordset then
Do while Not end of recordset
DO CODE
If end of recordset rerun Base Query
end loop
What this does is pull small sets of data into memory, reducing overhead when traversing your data set. This does require quite a few more hits to the DB, but reduces time significantly, especially if the query has/had been optimized.