Oracle
 sql >> база данни >  >> RDS >> Oracle

Странно поведение на пълно външно присъединяване в Oracle - как може да се обясни?

Оптимизаторът не трябва да избира да използва индекса на EMP.DEPT_ID във втората заявка, тъй като може да има NULL стойности. Това го кара да изключи един ред от резултатите.

Единственото обяснение без грешка, за което се сещам в момента, е, че по някакъв начин сте създали ограничения в режим DISABLE RELY, така че оптимизаторът да смята, че полето не може да съдържа NULL. В този случай би било правилно да се използва индексът предвид неправилната информация в ограниченията. Изглежда обаче, че опцията RELY не е налична за ограничения NOT NULL, така че не виждам как това може да е проблемът. Независимо от това, погледнете внимателно всички ограничения на таблиците.

Като оставим това настрана, има изненадващ брой бъгове на сайта на Oracle относно грешни резултати от пълни външни съединения. Може да удряте някой от тях. В доста от тези случаи заобиколното решение е да деактивирате „родните“ пълни външни съединения, което можете да направите за текущата си сесия с този оператор:

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. Как да използвам PBKDF2 в Oracle 12c?

  2. Изберете произволна извадка от резултати от резултат от заявка

  3. Проблем с Oracle Create View

  4. SQL Server / Oracle :Частни временни таблици

  5. Пренаредете колоните на таблицата в Oracle