Производительность Oracle XMLAGG - PullRequest
0 голосов
/ 16 ноября 2018

Таблица T1 имеет ~ 100 миллионов строк. Количество уникальных ключей ( Key1, Key2, Key3 ) составляет около 3 миллионов. Я агрегирую field1 как разделенное запятыми значение, сгруппированное в Key1, Key2, Key3 . Пробовал LISTAGG, но из-за ограничения в 4000 байтов начал использовать XMLAGG с getClobVal () для получения значения в виде CLOB и записи в таблицу. Работает уже более 90 минут. Временное использование пространства в настоящий момент составляет около 10%. Есть ли лучший способ сделать это, чтобы ускорить производительность? Любые входные данные приветствуются.

CREATE TABLE T1_AGGR 
AS
Select /*+ PARALLEL */
Key1, Key2, Key3, 
rtrim( 
xmlagg( 
xmlelement( e, field1 || ',' ) 
           ).extract( '//text()').getClobVal(), ',' ) dataValue
FROM T1
GROUP BY Key1, Key2, Key3;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...