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