Oracle的视图和索引

烂漫一生 提交于 2019-12-06 04:24:25

学习笔记:

##视图
    * 概念:视图就是提供一个查询的窗口,所有数据来自于原表。
    * 方法:
        * 查询语句创建表:
            * create table emp as select * from scott.emp;
        * 创建视图【必须有dba权限】
            * create view v_emp as select ename, job from emp;
        * 查询视图
            * select * from v_emp;
        * 修改视图【不推荐】
            * update v_emp set job='CLERK' where ename='ALLEN';
            * --做增删改需要加commit
            * commit;
        * 创建只读视图(with read only)
            * create view v_emp1 as select ename, job from emp with read only;

    * 作用:
        * 1. 视图可以屏蔽掉一些敏感字段。
        * 2. 保证总部和分部数据及时统一。


##索引
    * 概念:索引就是在表的列上构建一个二叉树。
    * 作用:
        * 达到大幅度提高查询效率的目的,但是索引会影响增删改的效率。
    * 方法:
        * 单列索引
        * 复合索引
    * 单列索引
        * 创建单列索引:
            * create index idx_ename on emp(ename);
        * 注意:
            * 单列索引触发规则,条件必须是索引列中的原始值。
            * 单行函数,模糊查询,都会影响索引的触发(不会触发索引)。
            * select * from emp where ename='SCOTT'
        
    * 复合索引
        * 创建复合索引:
            * 复合索引中第一列为优先检索列。
            * 如果要触发复合索引,必须包含有优先检索列中的原始值。
            * create index idx_ename_job on emp(ename,job);
        * 注意:
            * select * from emp where ename='SCOTT' and job = 'ANALYST';  --触发复合索引
            * select * from emp where ename='SCOTT' or job = 'ANALYST';  --不触发索引
            * select * from emp where ename='SCOTT';  --触发单列索引
    * 判断索引是否被触发(查看执行计划结果)
            * 1. 生成执行计划
                * explain plan for 
                * select * from emp where ename='SCOTT';
                    * 备注:explain plan for后面为要生成执行计划的查询语句
            * 2. 查看执行计划的结果
                * select * from table(dbms_xplan.display);


        

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!