Que diabos, vou arriscar.
Editar: No que diz respeito à conectividade, recomendo a HEARTILTY:
Oracle Objects para OLE , OO4O para abreviar.
É feito pela Oracle para Oracle, não pela MS. Ele usa drivers nativos de alto desempenho, NÃO ODBC para aumentar o desempenho. Eu pessoalmente usei isso em várias ocasiões e é rápido. Eu estava me conectando a bancos de dados e data warehouses extremamente grandes, onde cada tabela nunca tinha menos de 2 milhões de registros, a maioria era muito maior.
Observe que você não precisa saber OLE para usar isso. Ele envolve OLE, daí o nome. Conceitualmente e sintaticamente, ele envolve o "conjunto de resultados" em um dynaset alimentado por comandos SQL. Se você já usou DAO ou ADO, será produtivo em 5 minutos.
Aqui está um artigo mais aprofundado.
Se você não pode usar OO4O, então o .Net Data Provider especializado feito pela Oracle é muito bom. NÃO o feito pela MS.
HTH
Usar uma cláusula "WHERE"? Exemplo:"selecione id de objetos onde id =critérios"
ONDE
Isso envia apenas o registro de interesse pela rede. Caso contrário, todos os 23 milhões de registros são enviados pela rede.
OU, olhe para "entre".
"selecione id de objetos onde id entre este e aquele"
ENTRE
Isso envia um conjunto reduzido de registros no intervalo especificado.
HTH