Czy w zapytaniu jest zamówienie? 10 tys. wierszy to całkiem sporo, jeśli trzeba je posortować.
Ponadto pobieranie PK nie jest sprawiedliwym testem w porównaniu z pobieraniem całego CLOB. Oracle przechowuje wiersze tabeli z prawdopodobnie wieloma w bloku, ale każdy z obiektów CLOB (jeśli jest> 4K) będzie przechowywany poza linią, każdy w serii bloków. Skanowanie listy PK będzie zatem szybkie. Ponadto prawdopodobnie w PK znajduje się indeks, więc Oracle może po prostu szybko przeskanować bloki indeksu i nawet nie uzyskać dostępu do tabeli.
4 sekundy wydają się trochę za dużo, ale to 2 MB, które muszą być możliwe do odczytania z dysku i przetransportowania przez sieć do twojego programu Java. Problemem może być sieć. Jeśli wykonasz śledzenie SQL sesji, wskaże ci dokładnie, gdzie spędzany jest czas (odczyty dysku lub sieć).