为什么没有实施查询重写?
来源:互联网 发布:怎么提高阅读速度 知乎 编辑:程序博客网 时间:2024/06/05 10:08
为什么 物化视图PCT特性(2) 没有实施查询重写?
运行admin/utlxrw.sql脚本创建REWRITE_TABLE表。
指定单个物化视图
DBMS_MVIEW.EXPLAIN_REWRITE ( query VARCHAR2, --要解释的sql语句 mv VARCHAR2(30), --全限定物化视图名称(schema.mv),不指定为schema代表当前schema statement_id VARCHAR2(30));--客户端提供的用于区分输出信息的唯一标识
指定多个物化视图
DBMS_MVIEW.EXPLAIN_REWRITE(query, 'mv1, mv2, mv3') --mv1,mv2,mv3为多个物化视图
使用DBMS_MVIEW.EXPLAIN_REWRITE,对sql进行解释,但并没有真正的执行。
SQL> DECLARE 2 qrytext VARCHAR2(500) :='select t2.name, sum(t1.value) from a_list t1,b t2 3 where t1.id=t2.id and t1.type=''a'' 4 group by t2.name'; 5 idno VARCHAR2(30) :='ID1'; 6 BEGIN 7 DBMS_MVIEW.EXPLAIN_REWRITE(qrytext, 'PMARKER_MV', idno); 8 END; 9 /PL/SQL 过程已成功完成。SQL> SELECT message FROM rewrite_table ORDER BY sequence;MESSAGE------------------------------------------------------------------------------------------------------------------------QSM-01150: query did not rewriteQSM-01082: Joining materialized view, PMARKER_MV, with table, A_LIST, not possibleQSM-01102: materialized view, PMARKER_MV, requires join back to table, A_LIST, on column, TYPE
oracle要回表去找type字段信息,因此不能重写。设想使用pmarker的pct特性:如果两表中的分区表的分区键为连接字段,而在这时使用分区键做为谓词条件进行查询,则生效(此时 group by子句中的确不包含分区键)。
参考:
http://docs.oracle.com/cd/B19306_01/server.102/b14223/qradv.htm#sthref1495
- 为什么没有实施查询重写?
- 为什么父类的静态方法没有被重写?
- 企业为什么要实施ERP?
- 为什么重写 description 方法
- 为什么要重写hashcode()
- 为什么重写equal方法必须重写getHashCode?
- 重写Equals为什么要同时重写GetHashCode
- 为什么重写equals()必须重写hashcode()
- 为什么重写equals一定要重写hashCode
- 为什么重写了equals(),还要重写hashCode()?
- 为什么重写equals()也要重写hashCode()
- 为什么重写equals方法要重写hashCode
- 重写equal()为什么需要重写hashCode方法
- oracle之查询重写
- 重载 和重写 没有关系
- Hibernate开启了二级缓存后查询语句为什么没有被缓存
- 为什么重写hashCode 同时equals
- 为什么要重写hashcode() 方法
- 现代信息检索(Modern Information Retrieval)
- linux创建软raid和lvm的顺序
- JAVA WEB 异常处理原则
- 突然发现自己非常适合开培训班
- Extjs combox 常用属性及问题
- 为什么没有实施查询重写?
- 成功后面是付出===来硅谷三个月来第一篇关于硅谷的文章
- Spring Annotation Controller
- 初识HP ProLiant ML110 G7服务器
- Extjs 提交到后台接收不同组件值的区别
- Hibernate之one-to-one主键关联映射
- 《Shell脚本学习指南》第一章 背景知识
- vc 工程下文件介绍
- LKD第二章小节