WEB开发网
开发学院数据库DB2 DB2 中 MQT 的匹配原理及使用技巧 阅读

DB2 中 MQT 的匹配原理及使用技巧

 2010-03-31 00:00:00 来源:WEB开发网   
核心提示: MQT 能够精确匹配查询这种情况是最容易理解的,当 MQT 能够精确匹配查询时,DB2 中 MQT 的匹配原理及使用技巧(3),通常情况下,从 MQT 中获取数据的性能会优于执行相应查询,MQT 能匹配这个查询,在清单 2 中可以看到 MQT 和查询的详细内容,故选择 MQT 的执行方案通常会胜

MQT 能够精确匹配查询

这种情况是最容易理解的。当 MQT 能够精确匹配查询时,通常情况下,从 MQT 中获取数据的性能会优于执行相应查询,故选择 MQT 的执行方案通常会胜出。清单 2 中给出一个示例。其中 MQT SALES_PROD 基于外键连接事实表 Sales 与维表 Product。而查询则是同样的 Join 操作。这时,MQT 能匹配这个查询。在清单 2 中可以看到 MQT 和查询的详细内容,并且打印出的执行计划和拓展诊断信息明确的显示了 SALES_PROD 在查询匹配时被利用了。

清单 2. 精确的 MQT 匹配

 --MQT definition: join for SALES and PRODUCT 
 CREATE TABLE MQTSCH.SALES_PROD AS 
 (SELECT P.PROD_ID, PROD_DESC, AMOUNT 
 FROM MQTSCH.PRODUCT P, MQTSCH.SALES S 
 WHERE P.PROD_ID = S.PROD_ID) 
 DATA INITIALLY DEFERRED REFRESH DEFERRED; 
 
 refresh table MQTSCH.SALES_PROD; 
 
 --artifical statistics 
 runstats on table MQTSCH.SALES_PROD; 
 update syscat.tables set card=10 where tabname='SALES_PROD'; 
 
 --collect the explain information 
 DELETE FROM EXPLAIN_INSTANCE; 
 explain plan for SELECT P.PROD_ID, PROD_DESC, AMOUNT 
 FROM MQTSCH.PRODUCT P, MQTSCH.SALES S 
 WHERE P.PROD_ID = S.PROD_ID; 
 
 !db2exfmt -1 -d mqtdb -o join.plan; 

下面是 join.plan 打印出的执行计划和诊断信息:

 Access Plan: 
----------- 
    Total Cost:       10.3414 
    Query Degree:      1 
 
   Rows 
   RETURN 
   (  1) 
   Cost 
    I/O 
    | 
    10 
   TBSCAN 
   (  2) 
   10.3414 
    1 
    | 
    10 
 TABLE: MQTSCH 
  SALES_PROD 
    Q1 
 
 
 Extended Diagnostic Information: 
 -------------------------------- 
 
 Diagnostic Identifier: 1 
 Diagnostic Details: EXP0148W The following MQT or statistical view was 
 considered in query matching: "MQTSCH ". 
 "SALES_PROD". 
 Diagnostic Identifier: 2 
 Diagnostic Details: EXP0149W The following MQT was used (from those 
 considered) in query matching: "MQTSCH ". 
 "SALES_PROD". 

上一页  1 2 3 4 5 6 7 8  下一页

Tags:DB MQT 匹配

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接