Criação de visão materializada incrivelmente lenta ao usar a agregação de strings, alguma sugestão de desempenho?

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

Pergunta

Eu tenho muitas vistas materializadas, algumas delas levam apenas alguns segundos para criar e atualizar, enquanto outros podem me levar até 40 minutos para compilar, se o Sqldeveloper não travar antes disso.

Eu preciso agregar algumas cordas na minha consulta e tenho a seguinte função

create or replace
function stragg
  ( input varchar2 )
  return varchar2
  deterministic
  parallel_enable
  aggregate using stragg_type
;

Então, no meu MV, uso uma instrução SELECT, como

SELECT
  hse.refno,
  STRAGG (DISTINCT per.person_name) as PERSONS
FROM
 HOUSES hse,
 PERSONS per

Isso é ótimo, porque me dá o seguinte:

 refno        persons
 1            Dave, John, Mary
 2            Jack, Jill

Ao invés de :

 refno        persons
 1            Dave
 1            John
 1            Mary
 2            Jack 
 2            Jill

Parece que quando eu uso isso STRAGG Função, o tempo necessário para criar/atualizar um MV aumenta drasticamente. Existe um método alternativo para obter uma lista de valores separada de vírgula? Eu uso isso em todo o meu MVS, por isso é um recurso bastante necessário para mim

Obrigado

Foi útil?

Solução

Existem várias técnicas para agregação de string no link abaixo. Eles podem fornecer melhor desempenho para você.

http://www.oracle-base.com/articles/misc/stringaggregationtechniques.php

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top