zoukankan      html  css  js  c++  java
  • Oracle如何实现利用实体化视图提高查询性能

    实体化视图不仅可以作为远程复制查询的功用,而且能够提高复杂的统计查询的性能.
    1.创建查询语句对应的实体化视图. 
    SQL> conn sh/sh;
    SQL> create materialized view mv_sales
      2  refresh complete
      3  start with sysdate next sysdate+1
      4  as select PROD_ID,Count(PROD_ID) from sales group by PROD_ID;
        
    2.该视图是Enabled Query Rewrite,如果不是,
      运行下面的命令
      Alter Materialized View mv_sales enable query rewrite;
    3.参数query_rewrite_enabled 值是true. 你可以在参数里设置,或者会话级设置
      Alter session set query_rewrite_enabled = true;

    4.第四个也是最容易被忽略的,那就是optimizer_mode,不能是rule或者choose(在Oracle9i里这个值缺省是choose)
      Alter session set  optimizer_mode = true;   

    如果你还是发现你的查询很慢,你可以进行以下诊断:
    declare
     varQUERY VARCHAR2(200);
     varMV VARCHAR2(50);
     varSTATEMENT_ID VARCHAR2(10);
    begin
     varQUERY:= 'select PROD_ID,Count(PROD_ID) from sales group by PROD_ID'; --查询语句
     varMV:= 'MV_SALES';  --相应的实体化视图名称
     varSTATEMENT_ID:= 'hello'; --语句ID
     DBMS_MVIEW.EXPLAIN_REWRITE(QUERY=>varQUERY,MV=>varMV,STATEMENT_ID=>varSTATEMENT_ID);
    end;

    如果执行上面的命令报告以下错误:ORA-30380 REWRITE_TABLE does not exist.
    则先 Create it using the ORACLE_HOME\rdbms\admin\utlxrw.sql script after connecting to the desired schema.
    然后查询 原因:select * from rewrite_table;

  • 相关阅读:
    How to Automate IIS 7 Configuration with .NET
    windows phone 学习
    Redis VS. Memcached
    ROWNUM使用方法
    摘自----聊聊盛大的经验值
    理解Sql语句
    Odp.net 动态创建变量in
    ORACLE PLSQL DEVELOPER 中显示科学计数法
    http error 500.22 internal server error
    Resharper8 visual studio 中文版 快捷键无法使用
  • 原文地址:https://www.cnblogs.com/SharkXu/p/OracleMView.html
Copyright © 2011-2022 走看看