Apakah Anda mendapatkan paket kueri yang berbeda saat menyertakan petunjuk? Asumsi saya adalah Anda melakukannya berdasarkan deskripsi masalahnya.
Saat Anda menjalankan kueri di Oracle, database umumnya tidak mewujudkan seluruh hasil yang ditetapkan pada titik waktu mana pun (jelas, mungkin harus jika Anda menentukan ORDER BY
klausa yang mengharuskan semua data terwujud sebelum pengurutan terjadi). Oracle tidak benar-benar mulai mewujudkan data sampai klien mulai mengambil data. Ini menjalankan kueri yang cukup untuk menghasilkan berapa pun banyak baris yang diminta klien untuk diambil (yang kedengarannya seperti 10 dalam kasus Anda), mengembalikan hasil tersebut ke klien, dan menunggu klien meminta lebih banyak data sebelum melanjutkan memproses kueri.
Kedengarannya seperti ketika FIRST_ROWS
petunjuk disertakan, rencana kueri berubah dengan cara yang membuatnya lebih mahal untuk dieksekusi. Jelas, itu bukan tujuan dari FIRST_ROWS
petunjuk. Tujuannya adalah untuk memberi tahu pengoptimal untuk membuat rencana yang membuat pengambilan N baris pertama lebih efisien bahkan jika pengambilan semua baris dari kueri menjadi kurang efisien. Itu cenderung menyebabkan pengoptimal menyukai hal-hal seperti pemindaian indeks daripada pemindaian tabel di mana pemindaian tabel mungkin lebih efisien secara keseluruhan. Kedengarannya seperti dalam kasus Anda, bagaimanapun, perkiraan pengoptimal salah dan akhirnya memilih rencana yang umumnya kurang efisien. Itu sering menyiratkan bahwa beberapa statistik pada beberapa objek yang dirujuk oleh kueri Anda tidak lengkap atau salah.