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;

  • 相关阅读:
    经典SQL语句大全
    主键,外键,主键表,外间表
    一个不错的shell 脚本教程 入门级
    初窥Linux 之 我最常用的20条命令
    try catch finally 用法
    一个初学者对于MVC架构的理解
    第二次阶段冲刺2(6月1号)
    第二次阶段冲刺1(5月31号)
    学习进度条十三(第14周)
    学习进度条十二(第13周)
  • 原文地址:https://www.cnblogs.com/oldcat/p/3144320.html
Copyright © 2011-2022 走看看