Производительность Oracle XMLAGG

Таблица 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;

0 ответов

Другие вопросы по тегам