zoukankan      html  css  js  c++  java
  • Oracle优化之旅:使用leading, use_nl, rownum调优例子

    1、使用leading和use_nl来设置表的查询顺序,来加快查询速度,一般把小表设为第一个表。 
    /*+LEADING(TABLE)*/ 
      将指定的表作为连接次序中的首表. 
    /*+USE_NL(TABLE)*/ 
      将指定表与嵌套的连接的行源进行连接,并把指定表作为内部表. 
    成本计算方法: 
    设小表100行,大表100000行。 

    两表均有索引: 
    如果小表在内,大表在外(驱动表)的话,则扫描次数为: 
    100000+100000*2 (其中2表示IO次数,一次索引,一次数据) 
    如果大表在内,小表在外(驱动表)的话,则扫描次数为: 
    100+100*2. 

    两表均无索引: 
    如果小表在内,大表在外的话,则扫描次数为: 
    100000+100*100000 
    如果大表在内,小表在外的话,则扫描次数为: 
    100+100000*100 

    注意:如果一个表有索引,一个表没有索引,ORACLE会将没有索引的表作驱动表。如果两个表都有索引,则外表作驱动表。如果两个都没索引的话,则也是外表作驱动表。 

    2、使用index直接匹配索引来查询数据提高查询速度 
    /*+INDEX(TABLE INDEX_NAME)*/ 
      表明对表选择索引的扫描方法. 
    3、当判断某几个表中是否存在某种关系的行时可使用rownum=1来作为条件而加快速度,如果必须有多行才满足条件时,可设置rownum <= n。 
    例如:获得一个v_count值判断是否大于0 

  • 相关阅读:
    Swift
    Swift
    第二章_session管理
    HDU-1387-Team Queue
    Install Orace 11g on Solaris 10 Sparc 64 bit
    Linux 多学习过程
    dispatch_once认识分析
    关于包围神经猫的想法实现
    嵌入在网站上Flash播放机(2)
    初学者应学会如何加快seo
  • 原文地址:https://www.cnblogs.com/qiancaofengling/p/3523665.html
Copyright © 2011-2022 走看看