oracle视图与索引

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

实验步骤:

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


  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/[email protected];

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

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


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

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

4、对比创建索引前后的查询操作的差异
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‘;


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

小结:创建索引只对索引字段出现在where语句中有效。

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


    --执行查询
    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‘;


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

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

6、创建视图
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;

7、更新视图
UPDATE vw_test set sal= 1000;
UPDATE vw_salSummary set avgSal=1000;

8、视图的应用小结
视图优点:可以简化应用,方便权限管理,整合多来源数据、面向应用重组数据
视图中只能在简单视图中进行更新,但有可能更新数据后导致视图记录数发生变化。

原文地址:https://www.cnblogs.com/CQ--0101/p/9973645.html

时间: 2024-10-07 12:24:45

oracle视图与索引的相关文章

oracle视图和索引

视图和索引 视图 视图的作用 控制数据访问.简化查询.避免重复访问相同的数据 视图的优点 限制用户只能通过视图检索数据,用户看不到底层基表 注意事项 视图可以理解为临时表,会随着真实表的数据变化而自动变化 视图的名字以V_开头,表明是视图; 视图不提高任何效率 视图不占用空间 不是所有的视图都能更改(若改动能对应的原来的表,则可以,否则不可以,比如用了聚合函数的,或者group by而来的) 简单视图 语法 create or replace view 视图名 as select 语句; cre

Oracle实践--PL/SQL基础之视图和索引

PL/SQL基础入门之视图和索引         PL/SQL:过程语言(Procedure  Language)和结构化语言(Structured Query Language)结合而成的编程语言,是对SQL的扩展,支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制语句,可创建存储过程,程序包和触发器等,给sql语句的执行添加程序逻辑,与Oracle服务器和Oracle工具紧密集成,具有可移植性,灵活性和安全性. -----------------------------------

Oracle学习(十):视图,索引,序列号,同义词

1.知识点:可以对照下面的录屏进行阅读 视图,序列,索引,同义词 SQL> --视图:虚表 SQL> --视图的优点:简化复杂查询,限制数据访问(银行用的多),提供数据的相互独立,同样的数据可以有不同的显示方式 SQL> --第一个视图: 员工号 姓名 月薪 年薪 SQL> create view view1 2 as 3 select empno,ename,sal,sal*12 annlsal from emp; SQL> --如果显示没有权限,则需要授权,见下图1-1

java:Oracle(视图,索引,序列)

1.索引:索引一共分为4种 -- 在oracle中, -- normal:普通索引 -- unique:唯一索引 -- bitmap:位图索引 -- B 树索引:默认:如果不建立索引的情况下,oracle就自动给每一列都加一个B 树索引 -- index(下标,索引):作为索引,在oracle如果自带索引能满足当前查询需求,就只需要建立索引,oracle自带机制会帮你使用 -- 如果当前查询oracle自带的索引满足不了,就要自己编写索引 (不学) -- 索引就可以直接理解为一个目录 -- 二叉

Oracle数据库对象,同义词、序列、视图、索引

数据库对象简介 Oracle 数据库对象又称模式对象 数据库对象是逻辑结构的集合,最基本的数据库对象是表 其他数据库对象包括: 同义词是现有对象的一个别名. 简化SQL语句 隐藏对象的名称和所有者 提供对对象的公共访问 同义词共有两种类型: CREATE USER test IDENTIFIED BY test; GRANT CONNECT , CREATE SYNONYM TO test; GRANT SELECT ON SCOTT.EMP TO test; GRANT DELETE ON S

oracle创建序列&索引&视图

---oracle学习 --oracle的管理系统学习 --oracle的数据管理学习 --oracle的用户管理 --oracle二维表管理 --oracle的其他知识 --oracle的序列,视图,索引 --oracle的分页查询 --oracle的数据库备份 --oracle的图形化界面操作 序列 1 --oracle的序列的学习 2 --创建序列 3 --使用 create sequence 序列名 4 --特点1:默认开始是没有值的,也就是指针指在了没有值的位置. 5 --特点2:序列

Oracle笔记 目录索引

Oracle笔记 一.oracle的安装.sqlplus的使用 Oracle笔记 二.常用dba命令行 Oracle笔记 三.function .select Oracle笔记 四.增删改.事务 Oracle笔记 五.创建表.约束.视图.索引.序列.同义词.表空间 Oracle笔记 六.PL/SQL简单语句块.变量定义 Oracle笔记 七.PL/SQL 异常处理 Oracle笔记 八.PL/SQL跳转/判断/循环语句块 Oracle笔记 九.PL/SQL 游标的使用 Oracle笔记 十.PL

PL/SQL 编程(三 )程序包和包体,触发器,视图,索引

一.程序包和包体 程序包(package):存储在数据库中的一组子程序.变量定义.在包中的子程序可以被其它程序包或子程序调用.但如果声明的是局部子程序,则只能在定义该局部子程序的块中调用该局部子程序. 它具有面向对象程序设计语言的特点,是对这些PL/SQL 程序设计元素的封装.包类似于JAVA语言中的类,其中变量相当于类中的成员变量,过程和函数相当于类方法. create or replace package stuinfo as type stucur is ref cursor; proce

物化视图,索引视图,函数索引,创建索引时使用DESC

老板交给的一个任务,搜了一下资料,觉得还是总结一下比较好.假如以后用到了呢?围绕两个主题:一是视图上能够建索引,二是在创建索引时是否可以使用DESC关键字. 一.能否在视图上创建索引 因为普通的视图并没有存储实际的信息,它所操作的数据来自于基本表,所以在普通视图上不可以创建索引. 在oracle中执行如下的语句,会报"视图不适用于此处"的错误 create view test_car as select license from cars; create index index_vew