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

Кога правилният SQL ще даде грешен резултат

Едно нещо, което можете да направите, е да приложите подсказката NO_QUERY_TRANSFORMATION, въведена в Oracle 10g.

Ако това даде желания резултат, знаете, че сте изправени пред грешка в Oracle, тъй като никаква подсказка не трябва да променя действителния резултат от заявка.

В същото време може да сте решили проблема си, с изключение на това, че може би планът ви за изпълнение няма да е задоволителен.

Грешката, с която се сблъсквате (не знам дали е известна грешка), е, че оптимизаторът на Oracle може да не интерпретира правилно намерението на оригиналната заявка, когато трансформира заявката за по-добър план за изпълнение (сливане на изгледи и т.н.). Като използвате подсказката, вие инструктирате оптимизатора да не го прави.

Феноменът най-често се наблюдава при сложни заявки, включващи вградени изгледи за ефективност.

В момента нямам примерен код за възпроизвеждане на този проблем, но работя по него.

АКТУАЛИЗАЦИЯ:Изглежда, че това всъщност е предназначението на подсказката - намерих това:

документация .




  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?

  2. Добавяне на INNER JOIN към заявка с подзаявка с вграден оператор за избор

  3. Изпълнете функция на Oracle, която връща референтен курсор в C#

  4. Какво представлява двойната таблица в Oracle?

  5. Последователност без пропуски, при която са включени множество транзакции с множество таблици