频道栏目
读书频道 > 数据库 > Oracle > 高并发Oracle数据库系统的架构与设计
2.1.10 索引联立扫描
2014-11-28 14:30:57     我来说两句
收藏   我要投稿
Foreword?推 荐 序 一文以载道 书以自娱侯松的新书付梓,嘱我为序,品读精华章节,览其前言,心有所感,遂言而记之。关于写作之因由,于作者来说,一直是最为重要的缘起。认真地写作一本好书,其中的坚持、勤  立即去当当网订购
2.1.9节说到,若一个查询语句中,WHERE子句包含两个都有单独的索引筛选条件,则我们可以用index_combine扫描的方式来进行优化,但是index_combine仍然是需要有回表取数的操作。如果我们查询返回的列都包含在该两个索引中,我们就可以不用回表取数了,直接通过两个索引的HASH JOIN来完成就可以了。这个时候需要用另一个索引相关的HINT关键字index_join。
 
通过下面的例子来看一下,CBO优化器更倾向于COST更低的index_combine扫描,强制执行计划走index_join扫描,COST较index_combine扫描要高一些,但是相对单一索引的使用来说,却是有优势的。
SQL> select /*+ index_join(alex_t01 idx_alex_t01_id_b 
  2  idx_alex_t01_id_c) */ b, c from alex_t01 where b=600 and c=600;
----------------------------------------------------------------------------------------
| Id  | Operation          | Name              | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |                   |     1 |    10 |     3  (34)| 00:00:01 |
|*  1 |  VIEW              | index$_join$_001  |     1 |    10 |     3  (34)| 00:00:01 |
|*  2 |   HASH JOIN        |                   |       |       |            |          |
|*  3 |    INDEX RANGE SCAN| IDX_ALEX_T01_ID_B |     1 |    10 |     1   (0)| 00:00:01 |
|*  4 |    INDEX RANGE SCAN| IDX_ALEX_T01_ID_C |     1 |    10 |     1   (0)| 00:00:01 |
----------------------------------------------------------------------------------------
 
严格意义上讲,index_combine和index_join都不能算是一种独立的索引扫描方式,它们是对现有五种索引扫描方式的优化和补充,使其获得更好的性能优势。
 
INDEX COMBINE和INDEX JOIN扫描方式各自有其适用场景,合理的使用索引组合和索引联立会带来性能的大幅提升。
 
如果索引结构设计比较合理,则能在索引扫描过程中完成取数的操作,尽量在索引扫描中完成,避免回表取数的开销,这个技巧叫做索引覆盖应用(INDEX COVERING),它覆盖了查询的所有字段(select、 where、 order by、group by),用来提高查询的效率。
 
纵观各种索引扫描方式的介绍和分析,每种扫描方式都有其特点和适用场景,不能单纯地说哪种扫描方式更优。在优化的工作中,更不能简单地用某种扫描方式去替代另一种扫描方式,我们需要分析清楚具体的应用场景,根据业务需求选择合适的索引扫描方式。
 
如果统计信息和直方图收集得准确的话,CBO优化器会提供准确的COST开销估算,可以作为索引扫描方式选择的参考。在实际优化的工作中,我们往往不能获得足够准确的统计信息和直方图信息,就需要通过比较不同索引扫描方式下,SQL语句执行的响应时间来判断。
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:2.1.9 索引组合扫描
下一篇:2.2 索引与排序
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站