7. 10. 2016

Oracle - pomalé triedenie, with

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,..."

Ako alternatíva sú globálne dočasné tabuľky (GTT).

Žiadne komentáre:

Zverejnenie komentára