La creación de la vista materializada increíblemente lenta al usar la agregación de cadenas, ¿alguna sugerencia de rendimiento?

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

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

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top