数据库中索引(Index)的概念与目录的概念非常类似。如果某列出现在查询的条件中,而该列的数据是无序的,查询时只能从第一行开始一行一行的匹配。创建索引就是对某些特定列中的数据排序,生成独立的索引表。在某列上创建索引后,如果该列出现在查询条件中,Oracle会自动的引用该索引,先从索引表中查询出符合条件记录的ROWID,由于ROWID是记录的物理地址,因此可以根据ROWID快速的定位到具体的记录,表中的数据非常多时,引用索引带来的查询效率非常可观。
优点
1、提高对表的查询速度;
2、对表有关列的取值进行检查。
缺点
对表进行insert,update,delete处理时,由于要表的存放位置记录到索引项中而会降低一些速度。
1、一个基表不能建太多的索引;
2、空值不能被索引
3、只有唯一索引才真正提高速度,一般的索引只能提高30%左右。
语法
参数
01、UNIQUE:指定索引列上的值必须是唯一的。称为唯一索引。
02、schema ORACLE模式,缺省即为当前帐户
03、index 索引名
04、table 创建索引的基表名
05、column 基表中的列名,一个索引最多有16列,long列、long raw 列不能建索引列
06、DESC、ASC 缺省为ASC即升序排序
07、CLUSTER 指定一个聚簇(Hash cluster不能建索引)
08、INITRANS、MAXTRANS 指定初始和最大事务入口数
09、PCTFREE 索引数据块空闲空间的百分比(不能指定pctused)
10、STORAGE 存储参数,同create table 中的storage.
11、Tablespace 表空间名
12、NOSORT 不(能)排序(存储时就已按升序,所以指出不再排序)
1、索引信息,包含索引类型,唯一性,索引作用等表的信息
DBA_INDEXES
ALL_INDEXES
USER_INDEXES
2、索引列信息 包括索引上的列的排序方式等信息
DBA_IND_COLUMNS
ALL_IND_COLUMNS
USER_IND_COLUMNS