Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

coleta de dados agregados anuais para acesso rápido posterior


Uma visão materializada seria uma ótima opção para o que você está procurando fazer. Dessa forma, você pode escrever a consulta uma vez para a exibição e, em seguida, fazer com que os dados na exibição materializada sejam atualizados com a frequência que desejar. Você pode ter um trabalho que atualize os dados uma vez por noite, nos fins de semana ou em qualquer frequência que você escolher.

Após a criação da visualização materializada, você também pode adicionar índices sobre a visualização materializada para auxiliar no desempenho da consulta, se assim desejar.

Um exemplo rápido de como criar uma visualização materializada pode ser visto abaixo.
CREATE TABLE sale
(
    product_id     NUMBER,
    sale_date      DATE,
    sale_amount    NUMBER
);

INSERT INTO sale (product_id, sale_date, sale_amount)
     VALUES (124, DATE '2019-02-01', 40.25);

INSERT INTO sale (product_id, sale_date, sale_amount)
     VALUES (124, DATE '2019-02-01', 80.99);

INSERT INTO sale (product_id, sale_date, sale_amount)
     VALUES (124, DATE '2020-02-01', 30.50);

INSERT INTO sale (product_id, sale_date, sale_amount)
     VALUES (124, DATE '2020-02-01', 46.75);

CREATE MATERIALIZED VIEW sales_summary
BUILD IMMEDIATE
REFRESH FORCE ON DEMAND
AS
      SELECT product_id,
             SUM (sale_amount)                 AS annual_sales,
             MAX (sale_amount)                 AS max_price,
             MIN (sale_amount)                 AS min_price,
             EXTRACT (YEAR FROM sale_date)     AS year
        FROM sale
    GROUP BY product_id, EXTRACT (YEAR FROM sale_date);

Resultado
select * from sales_summary;

   PRODUCT_ID    ANNUAL_SALES    MAX_PRICE    MIN_PRICE    YEAR
_____________ _______________ ____________ ____________ _______
          124          121.24        80.99        40.25    2019
          124           77.25        46.75         30.5    2020