C'è un ordine per nella query? 10.000 righe sono parecchie se devono essere ordinate.
Inoltre, il recupero del PK non è un test equo rispetto al recupero dell'intero CLOB. Oracle memorizza le righe della tabella con probabilmente molte in un blocco, ma ciascuno dei CLOB (se sono> 4K) verrà archiviato fuori linea, ciascuno in una serie di blocchi. La scansione dell'elenco dei PK sarà quindi veloce. Inoltre, probabilmente c'è un indice sul PK, quindi Oracle può semplicemente scansionare rapidamente i blocchi dell'indice e non accedere nemmeno alla tabella.
4 secondi sembrano un po' alti, ma sono 2 MB che devono essere letti dal disco e trasportati sulla rete al tuo programma Java. La rete potrebbe essere un problema. Se esegui una traccia SQL della sessione, ti indicherà esattamente dove viene trascorso il tempo (letture del disco o rete).