• 物化视图


    以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;

  • 相关阅读:
    将dp转为px
    No tracked branch configured for branch dev or the branch doesn't exist. To make your branch track a remote branch call, for example, git branch --set-upstream-to=origin/dev dev
    ConstraintLayout中的chainstyle & guideline >
    android studio中的preview按钮不显示
    EditTextView:取消焦点&自动获取焦点
    HeadFrist 观察者模式(Kotlin版)
    ArrayList排序sort
    时间转换
    kotlin 程序入口
    网络数据请求
  • 原文地址:https://www.cnblogs.com/oldcat/p/3144320.html
Copyright © 2020-2023  润新知