sql >> Base de Datos >  >> RDS >> Oracle

recopilar datos agregados anuales para un acceso rápido posterior

Una vista materializada sería una excelente opción para lo que está buscando hacer. De esta manera, puede escribir la consulta una vez para la vista y luego hacer que los datos en la vista materializada se actualicen con la frecuencia que desee. Puede tener un trabajo que actualice los datos una vez por noche, los fines de semana o la frecuencia que elija.

Después de crear la vista materializada, también puede agregar índices encima de la vista materializada para ayudar con el rendimiento de la consulta, si así lo desea.

A continuación se puede ver un ejemplo rápido sobre cómo crear una vista materializada.

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