Saya punya permasalahan, dan mau tanya...

Begini ceritanya :
Saya punya tabel di oracle dengan field sekitar 180-an buah, dan salah satunya ada data BLOB sebagai data fingerprint..
Status saat ini tabel tersebut masih di bawah < 10rb.
Pada awal-awal aplikasi berjalan, dengan record masih dibawah 1000an, query seperti ini berikut berjalan dengan baik :
- Code: Select all
SELECT XXXX FROM NAMA_TABLE WHERE STATUS = 'OK'
Tetapi setelah recordnya menaik menjadi 3000-an, query seperti itu tidak mendapatkan data yg di inginkan (seperti stack / data terputus begitu).
Setelah saya cari-cari, ternyata query tersebut tidak akan berjalan ketika result rownya diatas 500 record.
Ok, ga mau ambil pusing karena program mau ga mau harus di pakai seketika itu juga, maka saya akali pake paging ketika meload data. Yaitu dengan mengambil per 500 data dengan menggunakan teknik Paging SQL di Oracle. Kira-kira seperti ini :
- Code: Select all
SELECT XXXX FROM (SELECT A.*, ROWNUM rnum FROM ( SELECT XXXX FROM NAMA_TABLE WHERE STATUS = 'OK' ) A WHERE ROWNUM <= {0}) WHERE rnum >= {1}
NB:
- Angka {0} diganti dengan row maksimum pengambilan (row start + 500)
- Angka {1} diganti dengan row start
Nah, sharing sudah selesai...
Sekarang permasalahannya.
Ketika jumlah record mulai beranjak naik (saat ini sekitar 6000an record), kuota pengambilan 500 sudah tidak bisa berjalan lagi...

Akhirnya harus saya turunkan menjadi quota 300-an, dan setelah record berjalan lagi... quota 300 juga tidak mau jalan lagi...
Dengan terpaksa saya memakai kuota 50 record per pengambilan data. Efeknya, aplikasi terkesan lambat ketika melakukan pengambilan data. T.T
Apakah ada yang aneh dengan oracle-nya ? Ataukah memang sifat oracle yg seperti itu ?
Atau mungkin om-om yang lain pernah mengalami hal serupa yg mungkin sudah menemukan solusi yg paling optimal.
Info Tambahan : Disini saya menggunakan Oracle 11g Enterprise, dan koneksi untuk melakukan query select tadi diluar jaringan (di koneksikan melalui IP Public).









, saya bantu doa aja. nggak ngerti oracle.
