oracle视图与索引

实验目的:
    一、理解索引和位图索引的基本概念
    二、掌握索引和位图索引的建立方法,并使用索引对查询过程产生的影响进行分析
    三、理解视图的基本概念
    四、掌握视图的建立方法,并对视图中数据查询与更新进行操做,明确其使用的注意事项。

实验步骤:

一、建立有特色的大数据表。
为了保证索引产生先后,查询效果的正确比对,应创建一个存在大量数据的测试表。这个测试表的数据来源于SYS模式下的all_objects视图,其中包括本数据库实例中的所有对象的基本描述,具体包括对象的全部者、对象名称、建立日期等信息。
建立测试表的具体过程:
  1)以sys帐号登陆数据库
    cmd>sqlplus sys/oracle321@orcl as sysdba  (注意sys登陆须要注明sysdba身份)
sql


  2)以建立查询表的方式在scott模式下建立包括‘SYS’、‘PUBLIC’、‘SCOTT’三个用户的所有对象
    SQL>  CREATE TABLE scott.DemoTable as
    SQL>2 SELECT * FROM all_objects
    SQL>3 WHERE owner IN ('SYS','PUBLIC','SCOTT');
     注意用户名字母必须大写。数据库


  3) 切换到scott帐号进行下一步操做。
     conn scott/tiger@orcl;

二、查询统计数据表的各数据量大小,了解大数据表中的基本状况。
  1)了解测试表的字段构成
    DESC demoTable;

  1)查询各用户记录数
    SELECT owner, count(*) 记录数
    FROM demoTable
    GROUP BY owner;oracle


  2)查询各列记录值的个数
    SELECT count(DISTINCT owner) 全部者数量
        ,count(DISTINCT OBJECT_TYPE) 对象类型数量
        ,count(DISTINCT OBJECT_name) 对象名称数量
    FROM demoTable;

三、分析表,开启追踪
analyze table demoTable compute statistics;
set autotrace trace explain  --开启追踪
注意:关闭追踪的方法为  set autotrace off;  

四、对比建立索引先后的查询操做的差别
1)无索引时执行查询(注意:名称中字母都要大写)
    SELECT * FROM demoTable where object_name = 'EMP';测试


    SELECT * FROM demoTable where owner ='SCOTT';

2)建立object_name索引后执行
    --建立索引
    CREATE INDEX idx_objectName ON demoTable(object_name);大数据


    --执行查询
    SELECT * FROM demoTable where object_name = 'EMP';优化


    SELECT * FROM demoTable where owner ='SCOTT';ui


    SELECT count(*) FROM demoTable where owner ='SCOTT';

小结:建立索引只对索引字段出如今where语句中有效。

3)建立owner索引后执行
    --建立索引
    CREATE INDEX idx_owner ON demoTable(owner);spa


    --执行查询
    SELECT * FROM demoTable where object_name = 'EMP';对象


    SELECT * FROM demoTable where owner ='SCOTT';排序


    SELECT count(*) FROM demoTable where owner ='SCOTT';


小结:建立索引在出现列值出现大量重复时无效,但对聚合操做有效。

4)建立位图索引后执行
    --删除原有owner索引
    DROP INDEX idx_owner;


    --建立位图索引
    CREATE BITMAP INDEX idx_owner_bitmap ON demoTable(owner);


    --执行查询
    SELECT * FROM demoTable where object_name = 'EMP';


    SELECT * FROM demoTable where owner ='SCOTT';


    SELECT count(*) FROM demoTable where owner ='SCOTT';


小结:位图索引对聚合操做会产生影响

五、索引的应用小结
   索引相似于座次表,是对数据(记录中的特定字段的值)的位置进行排序优化后的树状存储结构,
必定是在大数据的环境下有效
索引的优势:提升数据查询指定字段  效率,先创建指定字段的索引,而且指定字段的值具备离散性高的特色
缺点:占用空间、下降数据更新的效率
适用于查询多,更新少的大数据环境


六、建立视图
CREATE VIEW vw_test AS
select *
from emp
where sal+nvl(comm,0) > 2500;

CREATE VIEW vw_SalSummary as
select dname,avg(sal) avgSal,min(sal) minSal,max(sal) maxSal
from dept,emp
where dept.deptno = emp.deptno
group by dname;

七、更新视图
UPDATE vw_test set sal= 1000;
UPDATE vw_salSummary set avgSal=1000;
八、视图的应用小结视图优势:能够简化应用,方便权限管理,整合多来源数据、面向应用重组数据视图中只能在简单视图中进行更新,但有可能更新数据后致使视图记录数发生变化。

相关文章
相关标签/搜索