78 High-Function Business Intelligence in e-business
-------------------
SELECT Q3.$C1 AS "ROOT_LEVEL", Q3.$C0 AS "COUNTS"
FROM
(SELECT COUNT(Q2.$C1), Q2.$C0
FROM
(SELECT Q1.ROOT_LEVEL, Q1.COUNTS
FROM DB2ADMIN.AST3 AS Q1) AS Q2
GROUP BY Q2.$C0) AS Q3
Query 4:
The materialized view for this query looks like AST5 in Example 2-42. Note the
following generalization of local predicates for this query:
? The predicates on columns MESH.ROOT_LEVEL and MESH.FIRST_LEVEL
are added to the GROUP BY list, and removed from the predicates.
? The COUNT(DISTINCT FACT1_SUBSET.DOC_ID) select list item is replaced
by a column DOC_ID, and an addition of column DOC_ID to the GROUP BY
list.
Example 2-42 Materialized view AST5
CREATE SUMMARY TABLE AST5 AS
(
SELECT ROOT_LEVEL, MESH.FIRST_LEVEL, AUTHOR_NAME, DOC_ID
FROM FACT1_SUBSET, MESH, AUTHOR
WHERE FACT1_SUBSET.MESH_ID=MESH.MESH_ID AND
FACT1_SUBSET.AUTHOR_ID=AUTHOR.AUTHOR_ID
GROUP BY FIRST_LEVEL, ROOT_LEVEL, AUTHOR_NAME, DOC_ID
)
DATA INITIALLY DEFERRED REFRESH DEFERRED IN USERSPACE1
An estimate of the size of the materialized view was well within the limit of an
order of magnitude as compared to the base table. We ran an EXPLAIN of Query
4 to confirm that it was being routed to AST3 as shown in Example 2-43.
Example 2-43 EXPLAIN of Query 4
******************** EXPLAIN INSTANCE ********************
DB2_VERSION: 07.02.0
SOURCE_NAME: SQLC2D01
SOURCE_SCHEMA: NULLID
EXPLAIN_TIME: 2002-08-27-15.50.44.109000
EXPLAIN_REQUESTER: DB2ADMIN
Database Context:
----------------