sql >> Databáze >  >> RDS >> Oracle

Kdy správný SQL přinese nesprávný výsledek

Jedna věc, kterou můžete udělat, je použít nápovědu NO_QUERY_TRANSFORMATION představenou v Oracle 10g.

Pokud to přinese požadovaný výsledek, víte, že čelíte chybě Oracle, protože žádný náznak by neměl změnit skutečný výsledek dotazu.

Zároveň jste možná vyřešili svůj problém, kromě toho, že váš plán realizace možná nebude uspokojivý.

Chyba, se kterou se potýkáte (nevím, zda je to známá chyba), spočívá v tom, že optimalizátor Oracle nemusí správně interpretovat záměr původního dotazu při transformaci dotazu pro lepší plán provádění (sloučení pohledů atd.). Použitím nápovědy dáváte optimalizátoru pokyn, aby to nedělal.

Tento jev se nejčastěji vyskytuje u složitých dotazů zahrnujících inline zobrazení výkonu.

V současné době nemám žádné ukázky kódu pro reprodukci tohoto problému, ale pracuji na tom.

AKTUALIZACE:Zdá se, že ve skutečnosti je nápověda určena - našel jsem toto:

doumentace .




  1. jak vypočítat čas strávený na mé aplikaci podle časového razítka

  2. SQLite JSON_ARRAY_LENGTH()

  3. Laravel 'nemohl najít ovladač (SQL:vložit do...'

  4. jak získat horní trend s avg mysql