sql >> Database >  >> RDS >> Oracle

het verzamelen van jaarlijkse geaggregeerde gegevens voor latere snelle toegang

Een gematerialiseerde weergave zou een geweldige optie zijn voor wat u wilt doen. Op deze manier kunt u de query eenmaal schrijven voor de weergave en vervolgens de gegevens in de gerealiseerde weergave zo vaak laten vernieuwen als u wilt. U kunt een taak hebben waarbij de gegevens één keer per nacht, in het weekend of op welke frequentie dan ook worden vernieuwd.

Nadat de gerealiseerde weergave is gemaakt, kunt u desgewenst ook indexen toevoegen aan de gerealiseerde weergave om te helpen bij het uitvoeren van zoekopdrachten.

Hieronder ziet u een snel voorbeeld van hoe u een gematerialiseerde weergave kunt maken.

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

Resultaat

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



  1. Het BOOLEAN-type gebruiken in de SELECT-instructie

  2. Hoe tabs aan het begin en einde van het varchar-veld in MySQL te verwijderen?

  3. Problemen met een PostgreSQL upsert-query

  4. SELECT LAST_INSERT_ID() retourneert 0 na gebruik van de voorbereide instructie