实体化视图的查询重写功能

实体化视图(materialized view)是一个很好的功能,他不像普通视图似的每次查询都需要重新运行一个sql语句,他会将查询的结果存在数据库中,占用一些物理空间。
实体化视图可以提供一种叫做查询重写的功能,这个功能可以自动对查询语句进行优化。
一、查询重写功能的前提:
1.初始化参数QUERY_REWRITE_ENABLED设置成TRUE(默认值是FALSE)
2.在创建实体化视图时指定ENABLE QUERY REWRITE子句
3.数据库使用CBO
二、如果没有使用查询重写功能就报错
可以设置一个提示/*+REWRITE_OR_ERROR*/,这样如果这个select语句没有使用查询重写功能,它就会报错。
如果没有使用查询重写功能会报下面的错误
ORA-30393:a query block in the statement did not write.
可以使用DBMS_MVIEW.EXPLAIN_REWRITE过程弄清该查询为何不重写。
三、查询重写功能的完整性
查询重写功能的完整性依赖于初始化参数QUERY_REWRITE_INTEGRITY。默认值是ENFORCED
该初始化参数有三种值:
ENFORCED:强制的。范围最小
TRUSTED:包含enforced的所有范围,另外未被enable的主外键也会被考察到
STALE_TOLERATED:范围最大,包含上面两个参数的所有内容,还允许陈旧的数据进入考察范围。
四、使用DBMS_MVIEW程序包来诊断查询重写
Oracle经常会在指定查询重写之后也不正确执行实体化视图,这就需要我们去诊断。
DBMS_MVIEW程序包就可以用来诊断
1.使用EXPLAIN_MVIEW过程查看查询重写的类型是什么
2.使用EXPLAIN_REWRITE过程查看为什么不能重写某个查询以使用实体化视图
3.使用TUNE_MVIEW过程启用查询重写。此过程将建议如何重写实体化视图以便使它符合查询重写的要求。这个过程还告诉如何满足快速刷新实体化视图的要求。此过程将提取你输入的数据并产生一个准备实施的实体化视图创建脚本(以及必需的实体化视图日志)[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/41451/viewspace-1022883/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/41451/viewspace-1022883/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值