资源描述:
《oracle学习资料系列 (2).pdf》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《Oracle数据库》第7章其他数据库对象Copyright2008,OracleHJCChapter7–Page1第7章其他数据库对象7.1数据库模式对象Copyright2008,OracleHJCChapter7–Page2《Oracle数据库》7.2索引的创建和使用7.2.1Oracle数据库的索引索引(INDEX)是为了加快数据的查找而创建的数据库对象,特别是对大表,索引可以有效地提高查找速度,也可以保证数据的惟一性。索引是由Oracle自动使用和维护的,一旦穿件成功,用户不必对索引进行直接的操作。索引是独立于表的数据库结构,即表和索引是分开存
2、放的,当删除索引时,对拥有索引的表的数据没有影响。在创建PRIMARYKEY和UNIQUE约束条件时,系统将自动为相应的列创建惟一(UNIQUE)索引。索引的名字同约束的名字一致。索引有两种:B*树索引和位图(BITMAP)索引。B*树索引是通常使用的索引,也是默认的索引类型。在这里主要讨论B*树索引。B*树是一种平衡2叉树,左右的查找路径一样。这种方法保证了对表的任何值的查找时间都相同。B*树索引可分为:惟一索引、非惟一索引、一列简单索引和多列复合索引。创建索引一般要掌握以下原则:只有较大的表才有必要建立索引,表的记录应该大于50条,查询数据小于总行数
3、的2%~4%。虽然可以为表创建多个索引,但是无助于查询的索引不但不会提高效率,还会增加系统开销。因为当执行DML操作时,索引也要跟着更新,Copyright2008,OracleHJCChapter7–Page3第7章其他数据库对象这时索引可能会降低系统的性能。一般在主键列或经常出现在WHERE子句或连接条件中的列建立索引,该列称为索引关键字。7.2.2索引的创建创建索引不需要特定的系统权限。建立索引的语法如下:CREATE[{UNIQUE
4、BITMAP}]INDEX索引名ON表名(列名1[,列名2,…]);其中:UNIQUE代表创建惟一索引,不指明为创
5、建非惟一索引。BITMAP代表创建位图索引,如果不指明该参数,则创建B*树索引。列名是创建索引的关键字列,可以是一列或多列。删除索引的语法是:DROPINDEX索引名;删除索引的人应该是索引的创建者或拥有DROPANYINDEX系统权限的用户。索引的删除对表没有影响。【训练1】创建和删除索引。--步骤1:创建索引:createindexemp_enameonemp(ename);--步骤2:查询中引用索引:selectename,job,salfromempwhereename='SCOTT';--步骤3:删除索引:Dropindexemp_ename;
6、[说明]本例创建的是B*树非惟一简单索引。索引关键字列是ENAME。在步骤2中,因为WHERE条件中出现了索引关键字,所以查询中索引被自动应用,但是由于行数很少,因此不会感觉到查询速度的差别。【训练2】创建复合索引。--步骤1:创建复合索引:createindexemp_jobsalonemp(job,sal);--步骤2:查询中引用索引:selectename,job,salfromempwherejob='MANAGER'andsal>2500;[说明]在本例中创建的是包含两列的复合索引。JOB是主键,SAL是次键。WHERE条件中引用了JOB和SA
7、L,而且是按照索引关键字出现的顺序引用的,所以在查询中,索引会被引用。如下的查询也会引用索引:selectename,job,salCopyright2008,OracleHJCChapter7–Page4《Oracle数据库》fromempwherejob='CLERK';但以下查询不会引用索引,因为没有先引用索引关键字的主键:selectename,job,salfromempwheresal>2500;7.2.3查看索引通过查询数据字典USER_INDEXES可以检查创建的索引。通过查询数据字典USER_IND_COLUMNS可以检查索引的列。【训
8、练3】显示emp表的索引:selectindex_name,index_type,unquenessfromuser_indexswheretable_name='EMP';[说明]由本训练可见,emp表共由两个索引,其中EMP_JOBSAL是刚刚创建的,属于非惟一索引,PK_EMP为生成主键时系统创建的索引,属于惟一索引。【训练4】显示索引的列。selectcolumn_namefromuser_ind_columnswhereindex_name='EMP_JOBSAL';[说明]该查询显示出索引“EMP_JOBSAL”拥有两列:JOB和SAL。Co
9、pyright2008,OracleHJCChapter7–Page5第7章其他