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;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值