欢迎来到天天文库
浏览记录
ID:51970125
大小:245.50 KB
页数:40页
时间:2020-03-26
《唐远新全套配套课件Oracle数据库实用教程 第 3章 索引与视图.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三章索引与视图3.1管理索引3.2视图的创建与使用本章目录3.1管理索引3.1.1索引概述Oracle针对不同的数据库实体类型和应用提供了几种索引模式,它们是(1)B-树索引---默认的和最常用的索引(2)B-树簇索引---为簇定义的索引(3)散列簇索引---为散列簇定义的索引(4)全局和本地索引---相应于分区表和索引(5)反序索引---适用于Oracle实时应用集群的应用(6)位图索引---适用于具有少量值集的列(7)基于函数的索引---包含函数/表达式的预先计算的值(8)域索引---特别针对应用或插件创建索引
2、的语法如图3-1所示图3-1创建索引的语法最简单的创建索引语法如下CREATEINDEX索引名ON表名(列名ASC/DESC,列名ASC/DESC…);更实用和完整的创建索引语法如下CREATE[unique]INDEX[schema.]indexON[schema.]table(column[ASC
3、DESC][,column[ASC
4、DESC]]...)[INITRANSn]--缺省值为2[MAXTRANSn]--缺省值为255[PCTFREEn][LOGGING
5、NOLOGGING][NOSORT][STORA
6、GEstorage][TABLESPACEtablespace];例3.1为表EMP建立以ename为索引列的索引,索引名为emp_ename_index,索引存放的表空间为my_index。--创建一个索引表空间,专门存放索引数据connectsystem/system@oradbassysdbaCREATETABLESPACEmy_indexDATAFILE'%ORACLE_HOME%databasemy_index.dbf'SIZE1Mreuse;--创建索引,并指定它的存储空间connectscott/t
7、iger@oradbCREATEINDEXemp_ename_indexONemp(enameDESC)TABLESPACEmy_index;使用如下语句可以查看到用户的索引定义情况COLTABLE_NAMEFORMATA15COLINDEX_NAMEFORMATA18COLCOLUMN_NAMEFORMATA15SELECTix.table_name,ic.index_name,ic.column_name,ic.column_positioncol_pos,ix.uniquenessFROMuser_indexe
8、six,user_ind_columnsicWHEREic.index_name=ix.index_nameORDERBYix.table_name;3.1.2创建唯一索引可用CREATEUNIQUEINDEX语句来创建唯一索引。例3.2为dept表的dname列创建唯一索引。CREATEUNIQUEINDEXdept_unique_indexONdept(dname)TABLESPACEmy_index;例3.3观察下面语句的执行结果。--删除前面创建在dept的dname列上的索引DROPINDEXdept_un
9、ique_index;--向表DEPT中插入一条记录INSERTINTOdeptVALUES(80,'RESEARCH','HarBin');commit;--在表dept的dname列上建立唯一索引,索引名为unique_dname。CREATEUNIQUEINDEXunique_dnameONdept(dnameDESC);例3.3的最后一条语句的执行将返回如下信息ERROR位于第2行:ORA-01452:无法CREATEUNIQUEINDEX;找到重复的关键字3.1.3创建位图索引创建位图索引的限制:(1)不能
10、在全局分区索引上创建位图索引(2)不能同时指定UNIQUE和位图索引(3)不能在本地索引中使用位图索引例3.4在student表的性别列上创建位图索引。CREATEBITMAPINDEXstu_sex_indexONstudent(sex)TABLESPACEmy_index;3.1.4创建基于函数的索引使用基于函数的索引的好处如下(1)创建更强有力的分类(2)预先计算出计算密集的函数的值并在索引中将其分类(3)增加优化器可以执行范围扫描而不是全表扫描的情况的数量例3.5注意观察本例代码执行的结果。设student表
11、(在例2.4和例2.5中创建)的学生编号sno列的编码规则为:4位年+2位系别+2位班级+2位顺序号。如经常执行按年度的学生情况统计,则可创建如下形式的索引。CREATEINDEXyear_indexONstudent(substrb(sno,1,4))TABLESPACEmy_index;--系统提示权限不足。ERROR位于第1行:ORA-0
此文档下载收益归作者所有