免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3049 | 回复: 1
打印 上一主题 下一主题

DB2 物化查询表MQT疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-15 09:15 |只看该作者 |倒序浏览
根据网上查阅的资料,物化查询表事先将表数据放到物化查询表中,当SQL执行时,优化器会自动查找最优的执行计划,从而会用到物化查询表。但是并没有看到有什么限制
首先我的数据库是可以实现MQT优化的,库中的DB参数都设定好了
查询语句的结构大概是这样的:
with a1 as
(select
      brand_id,
      ...
from
      A
where
      ...
)
,b1 as
(select
        ...
from B
where ...
)
select
        ...
from
        (
                select
                  ...
                  sum(...)
                  ...
                from
                  A1,
                  B1,
                  C
                where
                  ...
                group by
                  ...
        ) combine
order by
        ...
其中,A表数据量很大,A1在筛选后也不少,B、C只是维表,记录数不到100
我用以上语句直接去创建MQT后,直接select MQT表的cost是72,而按原语句去执行,执行计划步骤的COST明显大于select MQT表,但是执行原语句为什么始终不用MQT呢?我感到很迷惑

论坛徽章:
0
2 [报告]
发表于 2012-05-23 14:46 |只看该作者
看下DB2的执行计划,执行计划中会有不使用MQT的描述(包括为什么不使用MQT),就在执行计划图的下面一点

还有几点可能影响是否使用MQT。
1、隔离级别,你可以常识在RR级别下建立MQT,然后在RS级别下执行SQL语句。
2、将数据库参数DFT_REFRESH_AGE设置为-1。如果建立MQT没有指定refresh immediate,则需要设置允许延迟刷新的时间。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP