科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Oracle数据仓库查询优化技术

Oracle数据仓库查询优化技术

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

[文章摘要] :Oracle在数据仓库的性能优化方面,提供了很多的特性和工具,除了常规的分区、并行以及位图索引,还有物化视图、Dimension,位图连接索引等。利用这些特性,可以在不改写应用的情况下,由DBA在数据库层面来进行查询性能优化。

作者:中国IT实验室 来源:中国IT实验室 2007年10月11日

关键字: ORACLE

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共4页)

四、位图连接索引
  位图连接索引(bitmap join index)是基于多表连接的位图索引,连接条件要求是等于的内连接(equi-inner join)。对于数据仓库而言,较普遍的是Fact table的外键列和相关的Dimension table的主键列的等于连接操作。位图连接索引能够消除查询中的连接操作,因为它实际上已经将连接的结果保存在索引当中了。而且,相对于在表的连接列上建普通位图索引来说,位图连接索引需要更少的存储空间。物化视图也可以用来消除连接操作,但位图连接索引比起物化视图来更有效率,因为通过位图连接索引可以直接将基于索引列的查询对应到事实表的rowid。
一个连接事实表和维度表的查询:

SQL> select f.amount1,f.amount2 2 from fact_sales f,time_dim t 3 where t.time_id=f.time_id 4 and t.t_day='2007-01-01'; 执行计划 ---------------------------------------------------------- Plan hash value: 1080213047 --------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | --------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 22 | 9 (12)| 00:00:01 | |*1 | HASH JOIN | | 1 | 22 | 9 (12)| 00:00:01 | |* 2 | TABLE ACCESS FULL| TIME_DIM | 1 | 13 | 5 (0)| 00:00:01 | | 3 | TABLE ACCESS FULL| FACT_SALES | 1000 | 9000 | 3 (0)| 00:00:01 | ---------------------------------------------------------------------------------


  创建连接时间维度表和销售事实表之间的位图连接索引:

SQL> create bitmap index ix_sales_time 2 on fact_sales(time_dim.t_day) 3 from fact_sales,time_dim 4 where fact_sales.time_id=time_dim.time_id; 索引已创建。

  再次执行同样的查询,可以发现,通过位图连接索引,无须再对time_dim和fact_salces表进行连接操作,直接通过位图连接索引,访问fact_slaes表即可得到结果:

SQL> select f.amount1,f.amount2 2 from fact_sales f,time_dim t 3 where t.time_id=f.time_id 4 and t.t_day='2007-01-01'; 执行计划 ---------------------------------------------------------- Plan hash value: 1533750321 ---------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ---------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 9 | 1 (0)| 00:00:01 | | 1 | TABLE ACCESS BY INDEX ROWID | FACT_SALES | 1 | 9 | 1 (0)| 00:00:01 | | 2 | BITMAP CONVERSION TO ROWIDS| | | | | | |*3 | BITMAP INDEX SINGLE VALUE | IX_SALES_TIME | | | | | ----------------------------------------------------------------------------------

[总结]
  本文简单的演示了Oracle数据仓库查询优化中的几种技术,注意体会各种不同的执行计划,选择最优的执行路径,减少逻辑读,是SQL性能优化的不二法门。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章