Невероятно медленное материализованное создание представления при использовании агрегации строк, какие -либо предложения по производительности?
-
22-09-2019 - |
Вопрос
У меня есть множество материализованных взглядов, некоторые из них занимают всего несколько секунд, чтобы создать и обновлять, в то время как другие могут понадобиться мне до 40 минут, если SQLdeveloper не ломается до этого.
Мне нужно собрать несколько строк в моем запросе, и у меня есть следующая функция
create or replace
function stragg
( input varchar2 )
return varchar2
deterministic
parallel_enable
aggregate using stragg_type
;
Затем в моем MV я использую оператор SELECT, такой как
SELECT
hse.refno,
STRAGG (DISTINCT per.person_name) as PERSONS
FROM
HOUSES hse,
PERSONS per
Это здорово, потому что это дает мне следующее:
refno persons
1 Dave, John, Mary
2 Jack, Jill
Вместо :
refno persons
1 Dave
1 John
1 Mary
2 Jack
2 Jill
Кажется, что когда я использую это STRAGG
Функция, время, необходимое для создания/обновления MV, резко возрастает. Есть ли альтернативный метод для достижения отдельного списка запятой? Я использую это на протяжении всего моего MV, так что это довольно необходимая функция для меня
Спасибо
Решение
Существует ряд методов для агрегации строк на ссылке ниже. Они могут обеспечить лучшую производительность для вас.
http://www.oracle-base.com/articles/misc/stringaggregationtechniques.php