Creazione di visualizzazione materializzata incredibilmente lenta Quando si utilizzano aggregazione di stringhe, eventuali suggerimenti sulle prestazioni?

StackOverflow https://stackoverflow.com/questions/2325390

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

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top