Zmaterializowany widok byłby świetną opcją dla tego, co chcesz zrobić. W ten sposób możesz napisać zapytanie raz dla widoku, a następnie dane w widoku zmaterializowanym będą odświeżane tak często, jak chcesz. Możesz mieć zadanie, które odświeża dane raz w nocy, w weekendy lub z dowolną wybraną przez Ciebie częstotliwością.
Po utworzeniu widoku zmaterializowanego możesz również dodać indeksy na górze widoku zmaterializowanego, aby wspomóc wydajność zapytań, jeśli tak zdecydujesz.
Szybki przykład tworzenia zmaterializowanego widoku można zobaczyć poniżej.
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);
Wynik
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