1、索引的概念
索引是用于加速数据存取的数据库对象。合理地使用索引可以大大降低I/O次数。
2、索引的功能:对记录进行排序,加快表的查询速度。
3、索引的分类:
(1)单列索引和复合索引
单列索引是基于单个列所建立的索引;复合索引时基于两列或多列所建立的索引。
SQL>CREATE    INDEX    emp_idx1   on  emp( ename, job);
SQL>CREATE    INDEX    emp_idx2   on   emp (job  , ename);
可以在相同列上建立不同的索引,列顺序不一致即可
(2)惟一索引和非唯一性索引
惟一索引是索引列值不能重复的索引;非惟一索引时索引列值可以重复的索引。
无论是惟一索引还是非惟一索引,索引都允许null;
当定义主键约束或惟一约束时,Oracle会自动在相应的约束列上建立惟一索引。
(3)B-tree 索引和位图索引
(a) B-tree 索引(默认)
a、在一个大表上
b、建立在重复值比较少的列上 ,在做select查询时,返回记录的行数小于全部记录的4%
c、如果这一列经常用来做where子句和排序,也可以用来建立索引
d、一般用于OLTP
(b)bitmap 索引
a、建立在重复值非常高的列上
b、 在做DML 操作时,代价值比较高
c、一般用于OLAP 或DSS
注意: B-tree 索引不能使用or连接的语句,bitmap index可以使用
4、建立索引:默认建立B-tree index
5、建立索引表空间
建议创建专门的索引表空间去存放索引,便于管理。
SQL> conn /as sysdba
Connected.
SQL> create tablespace indexes
2  datafile '/u01/app/oracle/oradata/anny/index01.dbf' size 100m
3  autoextend on next 10m maxsize 500m
4  extent management local uniform size 128k;
Tablespace created.
SQL> select file_id,file_name,tablespace_name from dba_data_files;
FILE_ID FILE_NAME                                          TABLESPACE_NAME
---------- -------------------------------------------------- ---------------
5 /u01/app/oracle/oradata/anny/text01.dbf            TEXT
4 /u01/app/oracle/oradata/anny/user01.dbf            USERS
3 /u01/app/oracle/oradata/anny/sysaux01.dbf          SYSAUX
2 /u01/app/oracle/oradata/anny/lx02.dbf              LX02
1 /u01/app/oracle/oradata/anny/system01.dbf          SYSTEM
6 /u01/app/oracle/oradata/anny/lx01.dbf              LX01
7 /u01/app/oracle/oradata/anny/undotbs01.dbf         UNDOTBS
8 /u01/app/oracle/oradata/anny/lx03.dbf              LX03
9 /u01/app/oracle/oradata/anny/lx04.dbf              LX04
10 /u01/app/oracle/oradata/anny/index01.dbf           INDEXES
10 rows selected.
6、与索引有关的视图
DBA_INDEXES
DBA_IND_COLUMNS
V$OBJECT_USAGE