Заматили, что если явно указать количество выбираемых на клиента записей, работа существенно ускориться.

Написали примерно так (псевдокод):

порция = 0
повторять до упора:
  записи = из запроса(
    select first 100 skip ? поля from table where какие-то)
  если пусто(записи):
    кончить.
  иначе:
    обработать(записи)
    порция += 100

И тут закрались сомнения: что будет, если в запросе не будет кляузы order by?
Все ли записи, удовлетворяющие условию в запросе будут вычитаны.

Ответить