Finns det en Order By i frågan? 10K rader är ganska mycket om det måste sorteras.
Att hämta PK är inte heller ett rättvist test jämfört med att hämta hela CLOB. Oracle lagrar tabellraderna med antagligen många i ett block, men var och en av CLOB:erna (om de är> 4K) kommer att lagras i rad, var och en i en serie av block. Att skanna listan över PK:s kommer därför att gå snabbt. Dessutom finns det förmodligen ett index på PK, så Oracle kan bara snabbt skanna indexblocken och inte ens komma åt tabellen.
4 sekunder verkar lite högt, men det är 2MB som måste kunna läsas från disk och transporteras över nätverket till ditt Java-program. Nätverket kan vara ett problem. Om du utför en SQL-spårning av sessionen kommer den att peka dig på exakt var tiden spenderas (diskläsning eller nätverk).