Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Perilaku aneh dari gabungan luar penuh di Oracle - bagaimana itu bisa dijelaskan?

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; 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengembalikan Jumlah Detik Lewat Tengah Malam di Oracle Database

  2. Hubungan Many-to-Many dalam Entity Framework dengan informasi hubungan

  3. ORA-01840:nilai input tidak cukup panjang untuk format tanggal di Oracle Insert menggunakan Select

  4. Selesaikan Fungsi Matematika PL/SQL

  5. Referensi yang bagus untuk Oracle PL/SQL