Материализираният изглед би бил чудесен вариант за това, което искате да направите. По този начин можете да напишете заявката веднъж за изгледа, след което данните в материализирания изглед да се обновяват толкова често, колкото желаете. Можете да имате работа, която опреснява данните веднъж на вечер, през уикендите или каквато честота изберете.
След като бъде създаден материализираният изглед, можете също да добавите индекси в горната част на материализирания изглед, за да подпомогнете изпълнението на заявката, ако решите.
Бърз пример за това как да създадете материализиран изглед може да видите по-долу.
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);
Резултат
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