Pengoptimal tidak boleh memilih untuk menggunakan indeks pada EMP.DEPT_ID dalam kueri kedua, karena dapat memiliki nilai NULL. Inilah yang menyebabkannya mengecualikan satu baris dari hasil.
Satu-satunya penjelasan non-bug yang dapat saya pikirkan saat ini adalah bahwa Anda entah bagaimana telah membuat batasan dalam mode DISABLE RELY sehingga pengoptimal berpikir bahwa bidang tersebut tidak dapat berisi NULL. Dalam hal ini akan benar untuk menggunakan indeks mengingat informasi yang salah dalam kendala. Namun, tampaknya opsi RELY tidak tersedia untuk batasan NOT NULL, jadi saya tidak melihat bagaimana ini bisa menjadi masalah. Meskipun demikian, perhatikan baik-baik semua batasan pada tabel.
Selain itu, ada sejumlah bug yang mengejutkan di situs Oracle mengenai hasil yang salah dari full outer join. Anda mungkin memukul salah satunya. Dalam beberapa kasus ini, solusinya adalah menonaktifkan gabungan luar penuh "asli", yang dapat Anda lakukan untuk sesi Anda saat ini dengan pernyataan ini:
alter session set "_optimizer_native_full_outer_join"=off;