Incroyablement lent Matérialisés Voir la création lors de l'utilisation d'agrégation de chaîne, des suggestions de performance?
-
22-09-2019 - |
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
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