索引是加快检索表中数据的方式。对于包含大量数据的表来说,如果没有索引,那么可能对表中数据的检索速度慢的难于忍受。
一种用于提升查询效率的数据库对象, 通过快速定位数据的方法,减少磁盘I/O操作。索引信息与表是独立分开存放的。 Oracle数据库会自动使用和维护索引。
索引是一种树状结构,可以通过该结构迅速访问表中的数据。索引的类型可以从 逻辑设计和物理实现两个方面来分类。 逻辑设计方面
从逻辑设计方面来看,也就是说主要考虑索引是如何组合的。这中情况下,可以把索引分成单列索引和复合索引、唯一性索引和非唯一性索引、基于函数的索引等类型。 索引关键字值包含了一个列的索引是单列索引。
复合索引的含义是索引关键字包含了表中的多个列,这个时候,索引关键字的顺序和表中列的顺序可以相同,也可以不同。在oracle9i的时候,复合索引所包含的列的数 量最多是32个。
索引主要是排列索引关键字的顺序,并不对这些关键字是否重复进行限制。如果不对索引列的重复值进行限制,这个时候的索引就是非唯一性索引。
如果限制索引列不能出现重复值,那么这时的索引被称为是唯一性索引。 物理实现方面
从物理实现的角度来看,索引可以分为分区索引和非分区索引、b树索引、正向索引和反向索引、位图索引等类型等。
对于数据量特别大的表来说,可以使用分区索引来存储。分区索引的含义是索引可以分散在多个表空间、降低查找数据的时间和提高可管理型。非分区索引的含义是索引存储在一个表空间中,这种管理和维护相对来说比较简单。
在正常的索引中,索引项是按照升序排列的,这时的索引也可以称为正向索引。
但是,如果希望索引中的关键字的排列按照反向排列,即降序排列,那么可以创建反向索引。 2 创建索引
创建索引的两种方式
自动创建-在定义主键或唯一键约束时候系统会自动在相应的字段上创建唯一性索引。 手动创建 //创建索引的语法
create [unique] index [user.]index on [user.]table
(column[asc|desc][,column[asc|desc]]...) [Tablespace tablespace][Pctfree n][Initrans n] [Storage storage][logging][nologging] [Nosort]
unique,指定唯一性索引,默认的索引是非唯一性索引。 user 索引/表的所有者。 index 将要创建的索引名称。 table 在其上面创建索引的表名称。 column 将要索引的列名称。
tablespace 指定要创建索引的表空间。
pctfree 为了存放新创建的索引项,指定创建索引时每一块预留的空间。
Initrans 指定每一块上为事务预分配的数量,默认值是2。 storage 指定一个存储子句,确定如何为索引分配空间。
logging 指定创建索引的操作以及之后的对索引的所有操作都记录在重做日志文件中。这是默认选择。
nosort 指定存储在数据库中的数据行按照升序排列,因此oracle服务器在创建索引时不再对数据进行排序。 例子:
//给表bigtable创建索引列 索引名为myIndex 列为id 升序排列, //为 唯一性索引。 用户名,表空间 等信息默认。 create unique Index myIndex on bigtable (id) 3 索引的优缺点 优点:
1, 大大加快数据的检索速度。
2, 创建唯一性索引,保证数据库表中每一行数据的唯一性。 3, 加速表和表之间的连接。
4, 在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。 缺点:
1, 索引需要占物理空间。
2, 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
因篇幅问题不能全部显示,请点此查看更多更全内容