Невероятно медленное материализованное создание представления при использовании агрегации строк, какие -либо предложения по производительности?

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

Вопрос

У меня есть множество материализованных взглядов, некоторые из них занимают всего несколько секунд, чтобы создать и обновлять, в то время как другие могут понадобиться мне до 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top