OracleDataReader neuloží všechny záznamy do paměti. Podívejte se na vlastnost Fetchsize, která řídí množství záznamů skutečně uložených v mezipaměti, dokud nebudeme potřebovat druhou zpáteční cestu do databáze.
Pokud například chcete, aby Oracle vracel řádky rychleji, můžete zkusit
/*+ FIRST_ROWS(n) */
nápověda ve vašem dotazu oproti
/*+ ALL_ROWS */
nápověda, jestli můžete počkat na všechna data.