1、索引的特点
        a、对具有只读我或较少插入、更新或删除操作的大表可以提高查询速度。
        b、可以对表的一列或多列建立索引。
        c、建立索引的数量没有限制。
        d、索引需要磁盘存储,需要oracle自动维护。
        e、索引对用户透明,是否使用索引是由oracle决定的。

2、RDBMS访问数据的基本方法
        a、全表扫描
        b、通过ROWID
        c、使用索引

3、增加索引会带来insert语句性能的下降。

4、索引的扫描类型
        a、索引唯一扫描(INDEX UNIQUE SCAN)
        b、索引范围扫描(INDEX RANGE SCAN)
        c、索引全扫描(INDEX FULL SCAN)
        d、索引快速扫描(INDEX FAST FULL SCAN)

5、限制索引使用的情况
        1)、使用不等于运算符(<>、!=),在where中使用不等于条件会使索引失效。
        2)、使用IS NULL或IS NOT NULL
        3)、使用函数,一些常见的函数如trunc substr to_date to_char instr等。
        4)、比较不匹配的数据类型。

6、查看执行计划示例
        SQL>explain plan for select * from emp;
        SQL>select * from table(dbms_xplan.display);


7、建立索引示例
        1)、创建索引表空间
        SQL> create tablespace index_tbs datafile '/u1/index/index_tbs1.dbf'
size 100M autoextend on;
        2)、建立索引
        SQL> create index emp_ename_sal_idx
                on emp(ename,sal)
                tablespace index_tbs;
        3)、建立索引全语句
        SQL>create [unique | bitmap] index [schema.]index_name
                on [schema.]table_name
                (column_name [desc | asc],column_name[desc | asc])
                [reverse]    ==>创建反向索引
[tablespace tablespace_name]
                [pctfree n]  ==>索引块中预先保留的空间比例
                [initrans n] ==>每个索引块中分配的事务数
                [maxtrans n] ==>每个索引块中最多的事务数
                [instorage state] ==>索引中区段EXTENT如何分配
                [logging | nologging]  ==>要记录|不要记录索引的相关操作
                [nosort]  ==>不要在创建索引时再按键值进行排序

8、查看用户索引
        SQL>select * from user_indexes;
        SQL>select * from user_idx_columns;


9、监控索引的使用
        1)、打开索引使用监控
        SQL>alter index PK_EMP monitoring usage;
        2)、关闭索引使用监控
        SQL>alter index PK_EMP nomonitoring usage;
        3、查看索引使用情况
        SQL>select * from v$object_usage;

10、重建索引并迁移表空间示例
        SQL>alter index PK_EMP
                rebuild
                tablespace index_tbs1;
        重建地索引不影响用户使用索引,但不能使用DEL操作和DML操作。

11、维护索引
        1)、手工增加索引磁盘空间
        SQL>alter index PK_EMP
                allocate extent;
        2)、合并索引碎片
        SQL>alter index PK_EMP coalesce;


12、删除索引
        SQL>drop index PK_EMP