Oracle SQL培训笔记[开发人员][三]

Oracle SQL培训笔记[开发人员][三]

四 索引与分页--怎么样SQL运行的更快

  1. 正确的使用索引
    Where条件落在索引上
    不要在where的=前使用函数,否则无法使用索引
    Is Null可能无法使用索引
    不正确的隐式转换可能不能使用索引
    如果能在索引获得数据,就不要回表
    如果是复合索引,注意第2个字段以后,可能使用不到索引
  2. 正确的使用hint
    如果有别名,一定要有别名
    格式如/*+ index(t index_name) */
  3. 无需回表查询的分页写法
    存在以下表T1(A,B,C,D) T1上有索引字段(B,C) .如果只是查B,C两个字段则:
    select   *
      
    from  ( select  tt.b, tt.c, rownum  as  rn
              
    from  ( select  t.b, t.c  from  t1 t  where  c  =   2   order   by  t.c) tt
             
    where  rownum  <   3 )
     
    where  rn  >   1
  4. 需回表查询的分页写法
    select   /* + ordered use_nl(t,t1)  */  
          
    *  
           
    from  ( select  rid  from  (
              
    select  rownum rn,rid  from  (
                
    select  rowid rid  from  t1
                 
    where  c = 2  
                 
    order   by  c  desc
              
    where  rownum  <=   50
           
    where  rn  >= 1 ) t,
           t1
    where  t.rid = t1.rowid;


你可能感兴趣的:(Oracle SQL培训笔记[开发人员][三])