<%@ page contentType="text/html; charset=gb2312"%> 在oracle8i中如何快速访问数据库
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
在oracle8i中如何快速访问数据库
     发布者: 发布时间:2007-01-27
oracle 是以高级结构化查询语言(sql)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合。是目前最流行的客户/服务器(client/server)体系结构的数据库之一,我们当然希望能够更加快速的访问数据库.我们在看书的时候为了更加迅速的找到我们关心的内容,首先我们会去看目录, 正如书籍目录有助于读者更快地找到信息一样,oracle表中的索引也有助于更快地检索到数据。如果应用程序运行较慢,设计巧妙的索引将会加快其速度。

表( ta b l e )是存放用户数据的数据库对象。每个表的信息放在数据字典中,o r a c l e使用数据字典来保证将正确类型的数据(如数字或字符)放到o r a c l e表中。形象的比喻是填表比作一个电子表格,电子表格中的单元( c e l l )相当于表中的表列。和电子表格中的单元一样,表中的表列也有相应的数据类型。如果定义电子表格中某个单元为数字数据类型,则在此单元中不能存放字符。表中的表列也是一样,类型为数字的表列不接收字符. 索引(index) 是表的小型化拷贝,表的索引项允许o r a c l e快速访问表中的数据。提示合理构造表索引有助于提高数据库查询速度。

根据我们的经验:如果把索引视为一个小表,将有助于理解索引的工作方式。设想有下

面的表(其中省略号表示还有表列从d到z未写出,该表应共有26个表列):

sql*plus: release 8.1.5.0.0 - production on mon feb 29 22;06 2001
(c) copyright 1999 oracle corporation.  all rights reserved
connected to:
oracle8i enterprise edition release 8.1.5.0.0 - production
with the partitioning and java options
pl/sql release 8.1.5.0.0 - production
sql> create table sample_3
2    (a   varchar2(30) ,
3    b  varchar2(30),
4    c  varchar2(30),
……
table created 


每当需要读取存在表列c中的数据时, o r a c l e系统必须也把保存在表列a、b以及d到z中的数据取出。计算机资源有限,每次进行这种操作时,对一次取出的信息量都有限制。为理

解上述所说的限制,假设o r a c l e 8 i发出从s a m p l e _ 3取数据的请求,内存限制要求每次最多能取出与四行表数据所占空间等量的信息。如表1所示,定义了一个3,1 2 0个字符的读缓冲区。

表1 无索引返回列c

column length              c l               3 0
columns retrieved      c r              2 6
rows retrieved             r r              4
buffer size                              cl*cr*cr = 3,120


即使只希望了解存放在表列c中的信息,数据库也会被迫取出存放在其他表列中的数据。

有一种解决此问题的方法就是使用索引( i n d e x )。用s q l语句create index colc_ind on

s a m p l e _ 3 ( c o l c );在表列c上建一个索引, o r a c l e根据此命令建立索引对象。用户可以将索引想像为只保存表s a m p l e _ 3的表列c中信息的一个小表。此外,使用索引检索出的信息最终也需s a m p l e _ 3中取出,这两个表就像一对双胞胎,对其中一个表所做的操作也影响另一个表。如果从主表s a m p l e _ 3中删除表列c的一项,则索引表中的相应项也被删除。

假设用户只想查询表s a m p l e _ 3的c表列中的数据, o r a c l e知道索引表中存放的数据可以解决此问题。因此, o r a c l e不直接浏览s a m p l e _ 3,而只查看索引表中的内容。o r a c l e进行同样的物理读操作,一次读操作的内存限制同样也为3 1 2 0个字符。使用刚建立的索引, o r a c l e只要取出表列c中数据即可。这时, o r a c l e一次就可以读取1 0 4个记录( 1 0 4×3 0=3 1 3 0 )到内存缓冲区中,

如.表2所示。

表2 有索引返回列c

buffer size                   bu       312 0
 column length            cl         30
  columns retrieved     cr        1
   rows retrieved                  cl/cr*bu = 104  


索引只包括表中用来建索引的表列的信息,不包括表中所有表列的信息。同样的一次读操作可以取回更多用户关心的信息。而且仅限于用户所关心的信息,表中别的表列的信息根本不用去管。索引是如此的重要,所以在介绍下一部分内容前,我们还要了解索引的另外一些特点和用途.

根据设计,存储在关系数据库中的数据并无特别的顺序,插入的记录保存在下一个可用

位置中。这样,当用户发布一条s q l语句查看特定日期或日期范围的记录时(例如:s e l e c t

from state where state_cd='' m a '';),o r a c l e系统需要遍历表中所有的行。另一方面,索引带有顺序号。如果用户在表中有一个日期类型的表列,可以在此表列上建一个索引。o r a c l e所建的索引中所有的数据都是排了序的。o r a c l e在索引上查找特定日期的数据并把信息返回给用户显然要快得多.

用户可以建立两种类型的索引:唯一性索引(unique index)和非唯一性索引( n o n u n i q u ei n d e x )。唯一性索引不允许数据重复,非唯一性索引允许。正如前面提及,索引和相应的表是一对双胞胎。如果对表中的表列c建立唯一性索引,则每当准备将一行数据插人实际的表之前,系统总要检查索引以确保表列c中数据的唯一性。s q l语句create index colc_ind on

s a m p l e _ 3 ( c o l c );用于建立非唯一索引,而create unique index colc_ind on sample_3

t a b l e ( c o l c );则用于建立唯一性索引。

o r a c l e允许用户建立并联索引,这种索引针对多个表列。用前面例子来说明这个问题。很多时候,用户在查看表列a时必定也要查看表列b和表列c。这时,就可以对此二表列建立并

联索引。建立并联索引的s q l语句为create index colabc_ind on sample_3 table(cola,c o l b,c o l c );,o r a c l e8i管理此索引的方法与管理单表列索引的方法完全一样

当用户编写查询语句有经验后,将会发现自己越来越愿意在s q l语句中使用索引来处理查询。

利用好索引我们就可以快速访问o r a c l e8i数据库.
(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
在windows2000下优化oracle9i性能(1)
在windows2000下优化oracle9i性能(2)
在windows2000下优化oracle9i性能(3)
在windows2000下优化oracle9i性能(4)
提高oracle数据库的查询统计速度
为oracle8iforsolaris配置并管理多个数据库
 
最近评论:
        
你曾悄悄的来过!
wow gold,wow gold,wow gold,ffxi gil max(6165)
        
冰封的往事!
wow power leveling,wow gold,WoW Gold,wow gold max(9321)
        
飞舞的传奇!
传世私服,传世私服.传奇世界私服传奇世界私服,传世私服传世私服, 传奇世界私服传奇世界私服.传奇私服传奇私服. max(7536)
        
飞舞的传奇!
传世私服,传世私服.传奇世界私服传奇世界私服,传世私服传世私服, 传奇世界私服传奇世界私服.传奇私服传奇私服. max(7349)
        
飞舞的传奇!
传世私服,传世私服.传奇世界私服传奇世界私服,传世私服传世私服, 传奇世界私服传奇世界私服.传奇私服传奇私服. max(7323)
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号