Stalo sa mi pri vyberaní riadkov z oracle databázy, že z komplikovaného view sa mi vrátil nezotriedený výstup okamžite, ale dátumovo triedenému trval výpis 5-6 sekúnd.
Možno by pomohlo použiť hinty, či upraviť definíciu view napr do iného poradia.
Nakoniec som však použil klauzulu "with" (oracle 9.2 a vyššie), ktorá vytvorí inline view, alebo dočasnú tabuľku podľa viacnásobnosti použitia.
with aa as (
select meno, datum, chyba
from tabulka_chyb)
select * from aa
order by datum desc, meno, chyba
Vznikne view "aa" ktoré obsahuje rýchlo vybrané nezotriedené dáta, z tohto sa následne selectom dáta vyberú a zotriedia. Po ukončení query sa view zahodí.
V prípade prepadu výkonu sa dá Oracle "donútiť" vytvoriť dočasnú tabuľku cez hint "materialize". Prvý select doplníme "select /*+ materialize */ meno,..."
V prípade prepadu výkonu sa dá Oracle "donútiť" vytvoriť dočasnú tabuľku cez hint "materialize". Prvý select doplníme "select /*+ materialize */ meno,..."
Ako alternatíva sú globálne dočasné tabuľky (GTT).
Žiadne komentáre:
Zverejnenie komentára