Производительность 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;