Oracle索引总结

关于索引的使用总结:
DDL:CREATE TABLE wn_test (k001 VARCHAR2(4000 ),k002 VARCHAR2( 4000),k003 VARCHAR2(4000 ));
数据量: 1418210
1:  WHERE k001 = 'xxx'
2:  WHERE k002 = 'xxx'
1,2 :WHERE k001 = 'xxx' AND k002 = 'xxx'
...
TRUE:-- 可以使用索引
FALSE:-- 不可以使用索引

注意: a.WHERE 条件中字段的先后顺序不会影响 SQL的查询效率,1, 2 和 2, 1的执行效果是一样的。
     b. 组合索引中的字段顺序会影响到 SQL是否会使用到索引,影响查询效率。
一.单字段索引的使用情况
  a.k001
    1          TRUE
    2          FALSE
    2,1         TRUE
  b.k001 & k002 ( 两个字段分别建立单字段索引 index1,index2)
    1          TRUE          index1
    2          TRUE          index2
    1,2         TRUE          index1
    2,1         TRUE          index1
    2,3         TRUE          index2
   
总结: WHERE 条件中凡是使用建立过索引的字段,都能使用索引
二.组合索引的使用情况
 
  a.组合为:k001,k002 时
    1          TRUE
    2          FALSE
    1,2         TRUE
  b.组合为:k002,k001 时
    1          FALSE
    2          TRUE
    1,2         TRUE
  c.组合为:k001,k002,k003 时
    1          TRUE
    2          FALSE
    3          FALSE
    1,2         TRUE
    1,3         TRUE
    2,3         FALSE
    1,2 ,3      TRUE
      
总结:创建组合索引时字段的顺序很关键 ,凡是在 Where 条件中包含组合索引中第一个字段的查询,都能使用索引,反之则不能使用索引。
  

你可能感兴趣的:(oracle,sql)