ALTER SYSTEM SET OPTIMIZER_MODE=ALL_ROWS; ALTER SYSTEM SET QUERY_REWRITE_ENABLED=TRUE; ALTER SYSTEM SET QUERY_REWRITE_INTEGRITY=ENFORCED;
GRANT CREATE MATERIALIZED VIEW TO CSCI317; GRANT QUERY REWRITE TO CSCI317; GRANT CREATE ANY TABLE TO CSCI317;
SELECT N_NAME, COUNT(*)
FROM CUSTOMER JOIN NATION
ON C_NATIONKEY = N_NATIONKEY
GROUP BY N_NATIONKEY, N_NAME;
-------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 44616 | 2309K | 292 (1) | 00:00:01 | | 1 | HASH GROUP BY | | 44616 | 2309K | 292 (1) | 00:00:01 | |* 2 | HASH JOIN | | 44616 | 2309K | 292 (1) | 00:00:01 | | 3 | TABLE ACCESS FULL| NATION | 25 | 1000 | 9 (0) | 00:00:01 | |* 4 | TABLE ACCESS FULL| CUSTOMER| 44616 | 566K | 282 (0) | 00:00:01 | --------------------------------------------------------------------------------
SELECT N_NAME, COUNT(*)
FROM CUSTOMER JOIN NATION
ON C_NATIONKEY = N_NATIONKEY
GROUP BY N_NATIONKEY, N_NAME;
0 recursive calls 0 db block gets 1062 consistent gets 0 physical reads 0 redo size 1145 bytes sent via SQL*Net to client 369 bytes received via SQL*Net from client 3 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 25 rows processed-
CREATE MATERIALIZED VIEW CUSTNAT AS
SELECT N_NAME, COUNT(*)
FROM CUSTOMER JOIN NATION
ON C_NATIONKEY = N_NATIONKEY
GROUP BY N_NATIONKEY, N_NAME;
SELECT * FROM CUSTNAT;
-------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 25 | 750 | 3 (0) | 00:00:01 | | 1 | MAT_VIEW ACCESS FULL| CUSTNAT| 25 | 750 | 3 (0) | 00:00:01 | --------------------------------------------------------------------------------
CREATE MATERIALIZED VIEW CUSTNAT AS
SELECT N_NAME, COUNT(*)
FROM CUSTOMER JOIN NATION
ON C_NATIONKEY = N_NATIONKEY
GROUP BY N_NATIONKEY, N_NAME;
5 recursive calls
0 db block gets
6 consistent gets
1 physical reads
0 redo size
1144 bytes sent via SQL*Net to client
369 bytes received via SQL*Net from client
3 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
25 rows processed
ALTER MATERIALIZED VIEW CUSTNAT ENABLE QUERY REWRITE;
SELECT N_NAME, COUNT(*)
FROM CUSTOMER JOIN NATION
ON C_NATIONKEY = N_NATIONKEY
GROUP BY N_NATIONKEY, N_NAME;
--------------------------------------------------------------------------- ... | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| ... --------------------------------------------------------------------------- ... | 0 | SELECT STATEMENT | | 25 | 750 | 3 (0) | ... | 1 | MAT_VIEW REWRITE ACCESS FULL| CUSTNAT | 25 | 750 | 3 (0) | ... ----------------------------------------------------------------------------...
CREATE MATERIALIZED VIEW CUSTNAT AS
SELECT N_NAME, COUNT(*)
FROM CUSTOMER JOIN NATION
ON C_NATIONKEY = N_NATIONKEY
GROUP BY N_NATIONKEY, N_NAME;
0 recursive calls
0 db block gets
5 consistent gets
0 physical reads
0 redo size
1145 bytes sent via SQL*Net to client
369 bytes received via SQL*Net from client
3 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
25 rows processed
CREATE MATERIALIZED VIEW MV_ORDERS
REFRESH ON COMMIT
ENABLE QUERY REWRITE
AS( SELECT O_ORDERKEY, O_CUSTKEY, O_TOTALPRICE, O_ORDERDATE
FROM ORDERS
WHERE O_ORDERDATE > TO_DATE('31-DEC-1986','DD-MON-YYYY') );
SELECT *
FROM MV_ORDERS
WHERE O_ORDERDATE = TO_DATE('01-JAN-1992','DD-MON-YYYY');
----------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 187 | 4488 | 507 (1) | 00:00:01 |
|* 1 | MAT_VIEW ACCESS FULL | MV_ORDERS | 187 | 4488 | 507 (1) | 00:00:01 |
----------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("O_ORDERDATE"=TO_DATE(' 1992-01-01 00:00:00', 'syyyy-mm-dd
hh24:mi:ss'))
CREATE MATERIALIZED VIEW MV_ORDERS
REFRESH ON COMMIT
ENABLE QUERY REWRITE
AS( SELECT O_ORDERKEY, O_CUSTKEY, O_TOTALPRICE, O_ORDERDATE
FROM ORDERS
WHERE O_ORDERDATE > TO_DATE('31-DEC-1986','DD-MON-YYYY') );
SELECT O_ORDERKEY, O_CUSTKEY, O_TOTALPRICE, O_ORDERDATE
FROM ORDERS
WHERE O_ORDERDATE > TO_DATE('31-DEC-1986','DD-MON-YYYY');
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 108K| 2539K| 507 (1)| 00:00:01 |
|* 1 | MAT_VIEW REWRITE ACCESS FULL| MV_ORDERS | 108K| 2539K| 507 (1)| 00:00:01 |
----------------------------------------------------------------------------------
Predicate Information (identified by operation id):
1 - filter("MV_ORDERS"."O_ORDERDATE">TO_DATE(' 1986-12-31 00:00:00',
'syyyy-mm-dd hh24:mi:ss'))
CREATE MATERIALIZED VIEW MV_ORDERS
REFRESH ON COMMIT
ENABLE QUERY REWRITE
AS( SELECT O_ORDERKEY, O_CUSTKEY, O_TOTALPRICE, O_ORDERDATE
FROM ORDERS
WHERE O_ORDERDATE > TO_DATE('31-DEC-1986','DD-MON-YYYY') );
SELECT O_ORDERKEY, O_CUSTKEY, O_TOTALPRICE, O_ORDERDATE
FROM ORDERS
WHERE O_ORDERDATE < TO_DATE('31-DEC-1996','DD-MON-YYYY');
PLAN_TABLE_OUTPUT
---------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 341K| 8341K| 1950 (1)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| ORDERS | 341K| 8341K| 1950 (1)| 00:00:01 |
---------------------------------------------------------------------
Predicate Information (identified by operation id):
1 - filter("MV_ORDERS"."O_ORDERDATE"