zoukankan      html  css  js  c++  java
  • 物化视图

    以system用户登录,解锁HR用户,再以HR用户登录;

    sqlplus system/password

    SQL>alter user hr account unlock;
    SQL>alter user hr identified by hr;
    SQL>conn hr/hr

    1、创建物化视图日志

    SQL> create materialized view log on employees with rowid;

    Materialized view log created.

    查看物化视图日志结构
    SQL> desc mlog$_employees;
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     M_ROW$$                                            VARCHAR2(255)
     SNAPTIME$$                                         DATE
     DMLTYPE$$                                          VARCHAR2(1)
     OLD_NEW$$                                          VARCHAR2(1)
     CHANGE_VECTOR$$                                    RAW(255)

    更新基表内容,查看物化视图日志的内容

    SQL>update employees set salary=12000 where employee_id=101;
    1 row updated.

    SQL>commit;
    Commit complete.

    SQL> select count(*) from mlog$_employees;

      COUNT(*)
    ----------
             1
    SQL> update employees set salary=12000 where employee_id=102;

    1 row updated.

    SQL> commit;
    Commit complete.

    SQL> select count(*) from mlog$_employees;

      COUNT(*)
    ----------
             2

    SQL> create materialized view log on departments with rowid;

    2、创建物化视图
    CREATE MATERIALIZED VIEW  mv_test
    REFRESH FAST ON COMMIT WITH ROWID
    AS SELECT e.employee_id, e.last_name, e.salary
    FROM employees e;

    SQL> select count(*) from mlog$_employees;

      COUNT(*)
    ----------
             0

    3、查询重写

    注意各个步骤的执行计划和代价

    SQL>create table my_all_objects
    as select * from all_objects
    union all
    select * from all_objects
    union all
    select * from all_objects;

    SQL>insert into my_all_objects select * from my_all_objects;

    SQL>commit;
    SQL>exec dbms_stats.gather_table_stats('HR','MY_ALL_OBJECTS');

    SQL>set autotrace on;
    SQL>select owner, count(*) from my_all_objects group by owner;

    SQL>CREATE MATERIALIZED VIEW MV_MY_ALL_OBJECTS USING INDEX REFRESH FORCE ON COMMIT WITH PRIMARY KEY
    enable query rewrite as
    select owner,count(*) from my_all_objects group by owner;


    SQL>select owner, count(*) from my_all_objects group by owner;

    SQL>insert into my_all_objects(owner,object_name,object_type,object_id)
    values('New Owner','New Name','New Type',1000000);

    SQL>commit;

    SQL>select owner, count(*) from my_all_objects where owner='New Owner' group by owner;


    SQL>drop materialized view MV_MY_ALL_OBJECTS;

    SQL>select owner, count(*) from my_all_objects group by owner;

  • 相关阅读:
    利用requests, beautifulsoup包爬取股票信息网站
    Mac自带编码转换工具iconv
    Flask 快速入门
    HTML模版组件
    JavaScript正则表达式及jQuery回顾
    jQuery 教程
    Document
    Document
    Document
    Document
  • 原文地址:https://www.cnblogs.com/oldcat/p/3144320.html
Copyright © 2011-2022 走看看