Unglaublich langsam materialisierte Ansichtserstellung bei der Verwendung von String -Aggregation, irgendwelche Leistungsvorschläge?
-
22-09-2019 - |
Frage
Ich habe eine Menge materialisierter Ansichten, einige von ihnen brauchen nur ein paar Sekunden, um zu erstellen und zu aktualisieren, während andere mich bis zu 40 Minuten zum Kompilieren brauchen, wenn SQLDEVERVER nicht vorher abstürzt.
Ich muss einige Saiten in meiner Anfrage zusammenfassen, und ich habe die folgende Funktion
create or replace
function stragg
( input varchar2 )
return varchar2
deterministic
parallel_enable
aggregate using stragg_type
;
Dann verwende ich in meinem MV eine ausgewählte Anweisung wie z.
SELECT
hse.refno,
STRAGG (DISTINCT per.person_name) as PERSONS
FROM
HOUSES hse,
PERSONS per
Das ist großartig, weil es mir Folgendes gibt:
refno persons
1 Dave, John, Mary
2 Jack, Jill
Anstatt von :
refno persons
1 Dave
1 John
1 Mary
2 Jack
2 Jill
Es scheint, dass ich das benutze, wenn ich das benutze STRAGG
Funktion, die Zeit zum Erstellen/Aktualisieren eines MV steigt dramatisch an. Gibt es eine alternative Methode, um eine Comma -Sonderliste von Werten zu erreichen? Ich benutze dies in meinem MVs, daher ist es eine sehr erforderliche Funktion für mich
Vielen Dank
Lösung
Es gibt eine Reihe von Techniken für die String -Aggregation am folgenden Link. Sie könnten Ihnen eine bessere Leistung bieten.
http://www.oracle-base.com/articles/misc/stringaggregationTechniques.php