加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle – MView“启用查询重写”用法

发布时间:2021-01-01 07:40:40 所属栏目:站长百科 来源:网络整理
导读:CREATE TABLE TEST_DATE(COL1 VARCHAR2(20),COL2 NUMBER,COL3_DATE DATE,COL4_DATE DATE)/ create materialized view TEST_SYSREFRESH FORCE ON DEMANDENABLE QUERY REWRITE --- ????ASSELECT COL1,COL2FROM TEST_dateWHERE TRUNC(SYSDATE) BETWEEN TRUNC(CO

CREATE TABLE TEST_DATE(COL1 VARCHAR2(20),COL2 NUMBER,COL3_DATE DATE,COL4_DATE DATE)
/   

create materialized view TEST_SYS
REFRESH FORCE ON DEMAND
ENABLE QUERY REWRITE  --- ????
AS
SELECT COL1,COL2
FROM    TEST_date
WHERE TRUNC(SYSDATE) BETWEEN TRUNC(COL3_DATE) AND TRUNC(COL4_DATE)
/

假如禁用“启用查询重写”选项,则会为上述查询建设MView,然后在建设实体化视图时行使ENABLE QUERY REWRITE子句的目标是什么,我们是否可以删除它并建设它,我们是否必需在机能上做出妥协MView,假如我们必需注释启用查询重写.

请具体表明我行使enable query rewrite选项.

办理要领

查询重写应承Oracle针对基表重写查询(在本例中为TEST_DATE),以透明地行使物化视图(在本例中为TEST_SYS).譬喻,当物化视图预先聚合数据时,这很是有效.假如我有一个事宜表和一个物化视图

CREATE MATERIALIZED VIEW mv_transaction_daily
  REFRESH FORCE ON DEMAND
  ENABLE QUERY REWRITE
AS
SELECT store_id,transaction_day,SUM(transaction_amount) total_transaction_amount
  FROM transactions
 GROUP BY store_id,transaction_day

那么Oracle可以转换一个相同的查询

SELECT store_id,transaction_day

行使物化视图而不是掷中基表.假如您建设了恰当的维度工具,则可以行使相同的查询

SELECT store_id,trunc(transaction_day,'MM'),SUM(transaction_amount) monthly_transaction_amount
  FROM transactions
 GROUP BY store_id,'MM')

也可以重写为行使物化视图而不是基表.

假如未启用查询重写,则只有在明晰查询实例化视图而不是查询基表时才气看到行使实例化视图的机能上风.这凡是必要更多的开拓事变,并限定DBA通过微调物化视图来调解应用措施的手段.

在您的环境下,WHERE子句中存在SYSDATE将阻止查询重写,由于Oracle无法确定针对TEST_DATE的查询现实上是否可以或许行使实例化视图.对付全部Oracle都知道,物化视图中的数据在物化视图革新时满意前提不再满意前提,而且数据未进入物化视图此刻仅仅由于SYSDATE已变动而满意前提.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读