La creación de la vista materializada increíblemente lenta al usar la agregación de cadenas, ¿alguna sugerencia de rendimiento?
-
22-09-2019 - |
Pregunta
Tengo un montón de vistas materializadas, algunas de ellas tardan solo unos segundos en crear y refrescar, mientras que otras pueden llevarme hasta 40 minutos para compilar, si SQLDegeloper no se bloquea antes de eso.
Necesito agregar algunas cuerdas en mi consulta, y tengo la siguiente función
create or replace
function stragg
( input varchar2 )
return varchar2
deterministic
parallel_enable
aggregate using stragg_type
;
Luego, en mi MV, uso una declaración selecta como
SELECT
hse.refno,
STRAGG (DISTINCT per.person_name) as PERSONS
FROM
HOUSES hse,
PERSONS per
Esto es genial, porque me da lo siguiente:
refno persons
1 Dave, John, Mary
2 Jack, Jill
En vez de :
refno persons
1 Dave
1 John
1 Mary
2 Jack
2 Jill
Parece que cuando uso esto STRAGG
función, el tiempo que lleva crear/actualizar un MV aumenta dramáticamente. ¿Existe un método alternativo para lograr una lista de valores separada de coma? Yo uso esto a lo largo de mi MVS, por lo que es una característica requerida para mí.
Gracias
Solución
Hay una serie de técnicas para la agregación de cadenas en el enlace a continuación. Podrían proporcionar un mejor rendimiento para usted.
http://www.oracle-base.com/articles/misc/stringaggregationtechniques.php