Una soluzione di database può avere diverse strutture:
1-Utilizzo del metodo di accesso casuale per leggere il file.
Utilizzando questo approccio, non hai bisogno di un database. È possibile aprire il file e utilizzare fseek (o metodo simile) per spostarsi sulla riga desiderata per eseguire la lettura. Potresti vedere un tutorial qui: Funzione di accesso casuale
2-Utilizzo della tabella caricata del database
Questo approccio richiede che tu esegua un carico prima di accedere ai dati. Ciò complica leggermente la soluzione, ma il carico non dovrebbe essere un problema se si utilizza il caricatore fornito dal database e si rilasciano gli indici prima del caricamento. Per ottenere il massimo le prestazioni utilizzando questo approccio, è possibile creare un indice di clustering sulla chiave desiderata. Anche questo richiederà alcuni secondi, anche se hai milioni di righe. A questo punto, la tua query sarà molto veloce e nulla potrebbe probabilmente sconfiggerlo.
3-Utilizzo del database File esterni (forniti da Oracle e probabilmente da altri database)
Questo approccio consente di accedere alle righe utilizzando SQL senza caricare fisicamente il file nel database. I vantaggi sono la facilità d'uso usando solo SQL e il fatto che nessun carico del database deve essere programmato o eseguito. È possibile scavare ulteriormente e vedere se un tale metodo di accesso consente il partizionamento senza creazione dell'indice (supponendo che i dati siano già in ordine). Potrebbe quindi essere molto veloce.
Suggerirei di provare le soluzioni nell'ordine elencato e testare le prestazioni. Immagino che la soluzione numero 1 dovrebbe essere la più veloce se hai la chiave esatta.