• IMMEDIATE Refresh is also called FAST Refresh.
• It updates a materialized view (MV) only with the changes made to the base tables.
• Materialized view logs are used to track what has changed.
• Only the new changes since the last refresh are applied.
• The refresh can happen automatically at commit (ON COMMIT) or manually when needed.
-- 1. Base Table Creation
CREATE TABLE sales_mvi (
sale_id NUMBER PRIMARY KEY,
product_id NUMBER,
sale_date DATE,
amount NUMBER
);
-- 2. Materialized View Log Creation
-- Required for FAST refresh
CREATE MATERIALIZED VIEW LOG ON sales_mvi
WITH ROWID, SEQUENCE (product_id, sale_date, amount)
INCLUDING NEW VALUES;
-- 3. Materialized View (FAST REFRESH ON COMMIT)
CREATE MATERIALIZED VIEW sales_mv
REFRESH FAST ON COMMIT
AS
SELECT product_id, SUM(amount) AS total_amount
FROM sales_mvi
GROUP BY product_id;
-- 4. Materialized View (FAST REFRESH on Schedule)
-- Example: Hourly Refresh
CREATE MATERIALIZED VIEW sales_mv
REFRESH FAST
START WITH SYSDATE
NEXT SYSDATE + 1/24
AS
SELECT product_id, SUM(amount) AS total_amount
FROM sales_mvi
GROUP BY product_id;
-- 5. Sample Data Insert
INSERT INTO sales_mvi VALUES (1, 101, SYSDATE, 500);
COMMIT;
-- 6. Query Materialized View
SELECT * FROM sales_mv;
Expected Output:
PRODUCT_ID | TOTAL_AMOUNT
101 | 500
No comments:
Post a Comment