索引的创建和使用

1. 创建索引实际上也是个排序的过程,在索引的列上进行排序之后,以平衡树结构自左向右将索引信息保存在磁盘上。

2. 索引包括列索引,函数索引和复合索引。
列索引:create index idx_col on tbl1(col1)
函数索引:create index idx_fn on tbl1(upper(col1))
复合索引:create index idx_com on tbl1(col1,col2)

注:复合索引的列顺序很重要,一般最常用的列放在最前面

3. 索引扫描方式
A.index range scan
B.index full scan
C.index fast full scan(自左向右有序扫描,而index full scan是无序扫描)
D.index skip scan

4. 强制利用索引查询的SQL:hint
select /*+ index(table_name index_name) */ * 
from table_name
where ...

注:以注释的方式启用索引,即使语法有错误,也不会影响查询

5. 利用索引主要是为了提高查询效率,但是也不是绝对的
当查询的数据占总数据的比重小的时候,利用索引会提高查询效率
当查询的数据占总数据的比重很大的时候,利用索引反而会降低效率
另外,有索引虽然会提高查询效率,但同时会降低数据变更的效率,
因为在变更数据的同时,要维护索引信息(即还要变更索引信息)。

6. 索引列上不能用表达式(包括函数),否则索引实效。除非创建了函数索引。

你可能感兴趣的:(oracle)