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