Невероятно медленное создание материализованного представления при использовании агрегирования строк, какие-либо предложения по производительности? - PullRequest
0 голосов
/ 24 февраля 2010

У меня есть множество материализованных представлений, для создания и обновления некоторых из них требуется всего несколько секунд, а для компиляции другим может потребоваться до 40 минут, если SQLDeveloper до этого не аварийно завершился.

Мне нужно объединить несколько строк в моем запросе, и у меня есть следующая функция

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

Затем в моем MV я использую оператор выбора, такой как

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, так что это совершенно необходимая функция для меня

Спасибо

1 Ответ

1 голос
/ 24 февраля 2010

Существует несколько методов агрегирования строк по ссылке ниже. Они могут обеспечить лучшую производительность для вас.

http://www.oracle -base.com / Статьи / Разное / StringAggregationTechniques.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...