Incroyablement lent Matérialisés Voir la création lors de l'utilisation d'agrégation de chaîne, des suggestions de performance?

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

Question

J'ai une charge de vues matérialisées, certains d'entre eux ne prennent que quelques secondes pour créer et actualiser, alors que d'autres peuvent me prendre jusqu'à 40 minutes pour compiler, si sqldeveloper ne tombe pas en panne avant.

je dois regrouper certaines chaînes dans ma requête, et j'ai la fonction suivante

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

Alors, dans mon MV j'utilise une instruction select comme

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

Cela tombe bien, car il me donne ce qui suit:

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

Au lieu de:

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

Il semble que quand j'utilise cette fonction STRAGG, le temps qu'il faut pour créer / actualiser une augmentation MV de façon spectaculaire. Y at-il une autre méthode pour obtenir une liste séparée par des virgules des valeurs? J'utilise ce tout au long de mes MVs il est donc tout à fait une caractéristique nécessaire pour moi

Merci

Était-ce utile?

La solution

Il y a au lien ci-dessous un certain nombre de techniques d'agrégation de chaînes. Ils pourraient offrir de meilleures performances pour vous.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top