Долгое выполнение запроса

Всем привет. Помогите, пожалуйста, с выполнением запроса. Можно ли каким-то образом оптимизировать данный скрипт для более быстрого выполнения?

     SELECT SYSDATE AS DATE_L,
           ta.OPER_MONTH,
           ta.AGENT_ID,
           ta.GAME_ID,
           ta.DRAW_ID,
           SUM(ta.TICKET_CNT) AS TICKET_CNT,
           SUM(ta.amount) AS AMOUNT
      FROM (SELECT TRUNC(t.pay_date, 'MM') AS OPER_MONTH,
                   t.pay_gate_agent_id AS AGENT_ID,
                   t.id_game AS GAME_ID,
                   t.id_draw_play AS DRAW_ID,
                   COUNT(t.id_ticket_root) AS TICKET_CNT,
                   SUM(t.win_amount) AS AMOUNT
              FROM DWH.T$ALL#TICKET t
             INNER JOIN dwh_mart.t$games g
                ON g.id = t.id_game
               AND g.game_is_active = 1
               AND g.game_group <> 4
             WHERE t.pay_date >= to_date('01.07.2021')
               AND t.pay_date < to_date('06.08.2021')
               AND t.pay_date >= TO_DATE('01.07.2021')
               AND (t.payment_flag = 0 OR t.payment_flag IS NULL)
               AND t.pay_gate_agent_id <> 2404
             GROUP BY TRUNC(t.pay_date, 'MM'),
                      t.pay_gate_agent_id,
                      t.id_game,
                      t.id_draw_play
            
            UNION ALL
            
        SELECT TRUNC(arm.oper_date, 'MM') AS OPER_MONTH,
               arm.agent_id AS AGENT_ID,
               arm.id_game AS GAME_ID,
               arm.id_draw_play AS DRAW_ID,
               COUNT(arm.ticket_barcode) AS TICKET_CNT,
               SUM(arm.amount) AS AMOUNT
          FROM ODS_MART.T$1CB#ARM_OPER arm
         WHERE arm.oper_date >= TO_DATE('01.07.2021')
           AND arm.oper_date >= to_date('01.07.2021')
           AND arm.oper_date < to_date('06.08.2021')
           AND arm.reg_ticket_type IN (0, 2)
         GROUP BY TRUNC(arm.oper_date, 'MM'),
                  arm.agent_id,
                  arm.id_game,
                  arm.id_draw_play) ta
 GROUP BY ta.OPER_MONTH, ta.AGENT_ID, ta.GAME_ID, ta.DRAW_ID

Данный вариант уже немного видоизмененный (Plan Hash Value был больше 3500000000, но все равно достаточно долго выполняется. План прикладываю.

введите сюда описание изображения

Индекс по таблице DWH.T$ALL#TICKET: введите сюда описание изображения

Индекс по таблице ODS_MART.T$1CB#ARM_OPER: введите сюда описание изображения

Индекс по таблице dwh_mart.t$games по столбцу ID

Статистика :

введите сюда описание изображения


Ответы (0 шт):