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

ORACLE с 2 висящи леви съединения, използващи LITERAL за предикат на външно JOIN изключване на ред от най-лявата таблица

Много интересно наблюдение, въпреки че не можах да го възпроизведа в моята база данни Oracle (версия 12.1.0.2.0). Трябва да спомена, че използвам Oracle Linux 6.5, а не Windows. Както и да е, би било добре да публикувам и плана за изпълнение за тази проста, но интересна заявка.

Благодаря ви много, че публикувахте плановете за изпълнение, това обяснява много добре поведението на заявката. След това ще обясня, започвайки с първия план за изпълнение:

<предварителен код>|* 2 | ХЕШ ПРИСЪЕДИНЯВАНЕ | | 1 | 17 | 8 (0)| 00:00:01 || 3 | ПРЕГЛЕД | | 2 | 14 | 4 (0)| 00:00:01 || 4 | СОРТИРАНЕ УНИКАЛНО | | 2 | | 4 (50)| 00:00:01 || 5 | СЪЮЗ-ВСИЧКИ | | | | | || 6 | БЪРЗ ДВОЙЕН | | 1 | | 2 (0)| 00:00:01 || 7 | БЪРЗ ДВОЙЕН | | 1 | | 2 (0)| 00:00:01 || 8 | ПРЕГЛЕД | | 2 | 20 | 4 (0)| 00:00:01 || 9 | СОРТИРАНЕ УНИКАЛНО | | 2 | | 4 (50)| 00:00:01 || 10 | СЪЮЗ-ВСИЧКИ | | | | | || 11 | БЪРЗ ДВОЙЕН | | 1 | | 2 (0)| 00:00:01 || 12 | БЪРЗ ДВОЙЕН | | 1 | | 2 (0)| 00:00:01 |

Както можете да видите, оптимизаторът избира да направи вътрешно присъединяване, вместо ляво присъединяване, и това се показва от „HASH JOIN“, а не от „HASH JOIN OUTER“, както би трябвало да бъде.

Честно казано, не съм чувал нищо за подобен бъг (досега), така че бих предложил следното:

  • Проверете pfile/spfile, ако съдържа някои недокументирани параметри.
  • Има случаи, когато задаването на тези параметри може да подобри производителността, но много пъти „кармата е ...“, както се казва, и можете да имате неочаквано поведение при изпълнение/производителност по наистина много лош начин.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. инструмент за разработчици на oracle sql - данните не са налични след извършване

  2. Пример за Oracle FOR LOOP REVERSE

  3. Мигриране на формуляр на Oracle, базиран на знаци

  4. Стъпка по стъпка R12.2.6 Инсталиране на EBS на Virtual Box Част -2

  5. Има ли начин за подобряване на MERGE заявка?