Pertanyaan ini sudah dijawab, saya hanya akan memberikan penjelasan mengapa terkadang filter ROWNUM=1 atau ROWNUM <=1 dapat menghasilkan waktu respons yang lama.
Saat menemukan filter ROWNUM (pada satu tabel), pengoptimal akan menghasilkan FULL SCAN dengan COUNT STOPKEY. Ini berarti Oracle akan mulai membaca baris sampai menemukan N baris pertama (di sini N=1). Pemindaian penuh membaca blok dari tingkat pertama hingga tanda air tinggi. Oracle tidak memiliki cara untuk menentukan blok mana yang berisi baris dan mana yang tidak sebelumnya, karena itu semua blok akan dibaca sampai N baris ditemukan. Jika blok pertama kosong, itu bisa mengakibatkan banyak pembacaan.
Pertimbangkan hal berikut:
SQL> /* rows will take a lot of space because of the CHAR column */
SQL> create table example (id number, fill char(2000));
Table created
SQL> insert into example
2 select rownum, 'x' from all_objects where rownum <= 100000;
100000 rows inserted
SQL> commit;
Commit complete
SQL> delete from example where id <= 99000;
99000 rows deleted
SQL> set timing on
SQL> set autotrace traceonly
SQL> select * from example where rownum = 1;
Elapsed: 00:00:05.01
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=7 Card=1 Bytes=2015)
1 0 COUNT (STOPKEY)
2 1 TABLE ACCESS (FULL) OF 'EXAMPLE' (TABLE) (Cost=7 Card=1588 [..])
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
33211 consistent gets
25901 physical reads
0 redo size
2237 bytes sent via SQL*Net to client
278 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
Seperti yang Anda lihat, jumlah perolehan yang konsisten sangat tinggi (untuk satu baris). Situasi ini dapat ditemui dalam beberapa kasus di mana misalnya, Anda menyisipkan baris dengan /*+APPEND*/
petunjuk (dengan demikian di atas tanda air tinggi), dan Anda juga menghapus baris terlama secara berkala, sehingga banyak ruang kosong di awal segmen.