`

物化视图PCT特性(2)

 
阅读更多

如果含有group by 子句,在select和 group by子句中需要包含分区键或分区标记(partition marker)或rowids,以支持PCT特性。
oracle内部会将rowids转换为分区标记(partition marker)。

以分区标记(partition marker)为例测试:


select /*+ REWRITE(PMARKER_MV) */ t2.name, sum(t1.value) from a_list t1,b t2
where t1.id=t2.id and t1.type='a'
group by t2.name ;
这句访问的是基表,按道理应该访问的是物化视图pmarker_mv,即进行查询重写为:

SELECT name, SUM(sum_val) FROM pmarker_mv where pmarker=51855 group by name;

以上是不成立的,因为物化视图pmarker_mv中没有type字段的信息,所以要回表(a_list)而不能实施查询重写。


物化视图解释信息,可以看出是可以进行查询重写的,可实际上没有,为什么该查询没有实施查询重写,可以使用DBMS_MVIEW.EXPLAIN_REWRITE存储过程。
这里的问题是:先不说PCT,根本就没有重写。


参考:
http://docs.oracle.com/cd/B19306_01/server.102/b14223/qrbasic.htm
http://docs.oracle.com/cd/B19306_01/server.102/b14223/qradv.htm


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics