У меня есть таблица FACT в 10 миллиардов строк в netezza, и я хочу выполнить ROW_NUMBER(), MAX() и SUM() в одном запросе. Когда я выполняю тот же запрос, выполняется более 3 часов. есть ли способ улучшить производительность запроса. Таблицы распределены по 4 столбцам, которые являются частью раздела (COLA, COLB, COLC, COLD).Как оптимизировать для Windowed Aggregate Partition-By Clause в Netezza
Например образца
SUM(STR_QTY) OVER (
PARTITION BY
COLA
,COLB
,COLC
,COLD
) AS SLS_RTRN_QTY
,
SUM(STR_QTY_1) OVER (
PARTITION BY
COLA
,COLB
,COLC
,COLD
) AS VAL_QTY
,MIN(ITM_FST_DT) OVER (
PARTITION BY COLA
,COLB
) AS FIRST_DT
,MAX(ITM_LST_DT) OVER (
PARTITION BY PARTITION BY COLA
,COLB
) AS LAST_DT
Edit 1: Первоначальный запрос
SELECT a.*
FROM (
SELECT F.DT_KEY AS DT_KEY
,F.COL_KEY AS COL_KEY
,F.PCK_ITM_KEY AS PCK_ITM_KEY
,F.COLC AS COLC
,F.COLD AS COLD
,F.COLA AS COLA
,F.COLB AS COLB
,F.COLC AS COLC
,F.SH_QTY AS SH_QTY
,SUM(F.SLS_QTY) OVER (
PARTITION BY F.COLD
,F.COLA
,F.COLB
,F.COLC
) AS SLS_QTY
,SUM(F.SLS_RTRN_QTY) OVER (
PARTITION BY F.COLD
,F.COLA
,F.COLB
,F.COLC
) AS SLS_RTRN_QTY
,SUM(F.PCHSE_QTY) OVER (
PARTITION BY F.COLD
,F.COLA
,F.COLB
,F.COLC
) AS PCHSE_QTY
,MAX(F.LST_ML_DT) OVER (
PARTITION BY F.COLA
,F.COLC
) AS LST_ML_DT
,F.LST_MODFD_DTTM AS LST_MODFD_DTTM
,ROW_NUMBER() OVER (
PARTITION BY F.COLD
,F.COLA
,F.COLB
,F.COLC
,F.COLE ORDER BY F.DT_KEY DESC
) AS RNK
FROM FCT_ITEM F
) a
WHERE a.RNK = 1;
В последнее время я наблюдал странное поведение с нашей машиной. Этот запрос использовался для прекращения работы (~ 1 ч), когда система была заполнена на 70%. Есть ли связь между растущей производительностью запросов данных. В настоящее время система Netezza добралась до своей емкости (с нашей текущей лицензией 50%). – NzGuy
Если вы имеете в виду, что у вас есть система Growth-on-Demand, в которой вы имеете право на 50% емкости хранилища, это не является жестким пределом, установленным системой. Однако, когда вы перераспределяете всю таблицу для ответа на запрос, это вызывает много временного, обычно ненужного давления на чтение и чтение в системе, поскольку оно будет перемещать миллиарды строк вокруг SPU для ответа на вопрос. Таким образом, рост данных может определенно быть проблемой. – ScottMcG
Когда есть таблица с 4 столбцами распределения, 9 раз из 10, это было ошибкой и ее необходимо переоценить. – ScottMcG