Oracle
 sql >> Base de données >  >> RDS >> Oracle

collecte de données annuelles agrégées pour un accès rapide ultérieur

Une vue matérialisée serait une excellente option pour ce que vous cherchez à faire. De cette façon, vous pouvez écrire la requête une seule fois pour la vue, puis rafraîchir les données de la vue matérialisée aussi souvent que vous le souhaitez. Vous pouvez avoir une tâche qui actualise les données une fois par nuit, le week-end ou à la fréquence de votre choix.

Une fois la vue matérialisée créée, vous pouvez également ajouter des index au-dessus de la vue matérialisée pour améliorer les performances des requêtes si vous le souhaitez.

Un exemple rapide sur la façon de créer une vue matérialisée peut être vu ci-dessous.

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);

Résultat

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