Creazione di visualizzazione materializzata incredibilmente lenta Quando si utilizzano aggregazione di stringhe, eventuali suggerimenti sulle prestazioni?
-
22-09-2019 - |
Domanda
Ho un sacco di viste materializzate, alcune di esse impiegano solo pochi secondi per creare e rinfrescare, mentre altri possono richiedermi fino a 40 minuti per compilare, se SQLDVelance non si schianta prima.
Devo aggregare alcune corde nella mia query e ho la seguente funzione
create or replace
function stragg
( input varchar2 )
return varchar2
deterministic
parallel_enable
aggregate using stragg_type
;
Quindi, nella mia MV utilizzo un'istruzione selezionata come
SELECT
hse.refno,
STRAGG (DISTINCT per.person_name) as PERSONS
FROM
HOUSES hse,
PERSONS per
Questo è fantastico, perché mi dà quanto segue:
refno persons
1 Dave, John, Mary
2 Jack, Jill
Invece di :
refno persons
1 Dave
1 John
1 Mary
2 Jack
2 Jill
Sembra che quando lo uso STRAGG
Funzione, il tempo necessario per creare/aggiornare un MV aumenta drasticamente. Esiste un metodo alternativo per ottenere un elenco di valori separati da virgola? Lo uso in tutto il mio MVS, quindi è una caratteristica abbastanza richiesta per me
Grazie
Soluzione
Esistono diverse tecniche per l'aggregazione delle stringhe al link seguente. Potrebbero fornire prestazioni migliori per te.
http://www.oracle-base.com/articles/misc/stringaggregationtechniques.php