数据库的视图和索引自学笔记

视图

视图(View)是从一个或多个表(或视图)导出的表。视图与表(有时为与视图区别,也称表为基本表--Base Table)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。

视图的作用:

(1)视图能简化用户的操作

(2)视图机制可以使用户以不同的方式查询同一数据

(3)视图对数据库重构提供了一定程度的逻辑独立性

    --创建视图--  

   create or replace view v_student as select * from student;  
        --从视图中检索数据--  
        select * from v_student;  
        --删除视图--  

  drop view v_student; 

对视图的修改:单表视图一般用于查询和修改,会改变基本表的数据, 多表视图一般用于查询,不会改变基本表的数据。

视图的缺点:缺点: 
①性能差
  数据库必须把视图查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,数据库也要把它变成一个复杂的结合体,需要花费一定的时间。 
②修改限制
  当用户试图修改视图的某些信息时,数据库必须把它转化为对基本表的某些信息的修改,对于简单的视图来说,这是很方便的,但是,对于比较复杂的试图,可能是不可修改的。

在定义数据库对象时,不能不加选择地来定义视图,应该权衡视图的优点和缺点,合理地定义视图。

索引

索引不是给你使用的,而是数据库本身使用,索引只是为了让你的查询更加快速而已

索引的创建:

一、在表上创建一个简单的索引。允许使用重复的值:
CREATE INDEX index_name

ON table_name (column_name)

二、在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。
CREATE UNIQUE INDEX index_name

ON table_name (column_name)

注意点:

1、索引不要与表存放在同一个表空间内; 

2、一个表的索引不要过多;

3、对于大表而且使用频繁的表,在生产时最好不要去加索引; 

如果对大表进行索引,取出的数据大于总量的5%至10%,使用索引扫描会效率下降很多。如果通过索引,取出数据量为总量的50%以上,这个时候还不如全表扫描来得快。 

4、数据量小的表,使用不频繁的不要单独另建立索引;

5、在查询条件中几个条件一起使用的,适合建立组合索引,否则不要建立组合索引,当单独引用非第一字段时将发生全表扫描; 
在Oracle9i之前,只有在使用到索引的前导索引时才可以使用组合索引

6,在查询的时候,where条件不要对索引的列做处理,而要对后面的条件字段做处理。否则用不上这个列上的索引。 

影响数据库索引的因素:

1、调整数据结构的设计。这一部分在开发信息系统之前完成,程序员需要考虑是否使用ORACLE数据库的分区功能,对于经常访问的数据库表是否需要建立索引等。

2、调整应用程序结构设计。这一部分也是在开发信息系统之前完成,程序员在这一步需要考虑应用程序使用什么样的体系结构,是使用传统的Client/Server两层体系结构,还是使用Browser/Web/Database的三层体系结构。不同的应用程序体系结构要求的数据库资源是不同的。
3、调整数据库SQL语句。应用程序的执行最终将归结为数据库中的SQL语句执行,因此SQL语句的执行效率最终决定了ORACLE数据库的性能。ORACLE公司推荐使用ORACLE语句优化器(Oracle Optimizer)和行锁管理器(row-level manager)来调整优化SQL语句。
4、调整服务器内存分配。内存分配是在信息系统运行过程中优化配置的,数据库管理员可以根据数据库运行状况调整数据库系统全局区(SGA区)的数据缓冲区、日志缓冲区和共享池的大小;还可以调整程序全局区(PGA区)的大小。需要注意的是,SGA区不是越大越好,SGA区过大会占用操作系统使用的内存而引起虚拟内存的页面交换,这样反而会降低系统。

猜你喜欢

转载自blog.csdn.net/readygoing/article/details/80068626
今日推荐