博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用位图连接索引优化OLAP查询
阅读量:6833 次
发布时间:2019-06-26

本文共 1552 字,大约阅读时间需要 5 分钟。

位图连接索引,就是将事实表和维度表的ROWID提前进行映射,省去了连接时的开销。
下面将位图连接索引和一般的位图索引进行比较。
看以下SQL语句:

点击(此处)折叠或打开

  1. select s.prod_id,s.promo_id,s.channel_id
  2. from sales_A s, products_A pd, promotions_A pm, channels_A ch
    where s.prod_id = pd.prod_id
      and s.promo_id = pm.promo_id
      and s.channel_id = ch.channel_id
      and pd.prod_id = 27;
如果分别在sales_A表上为prod_id, promo_id, channel_id列创建位图索引,其执行计划为:
然后创建位图连接索引。
创建位图索引,需要确保维度表的连结列上有唯一索引或主键,如果是复合主键,则需要将相关列都加入进来。
配置唯一性约束:

点击(此处)折叠或打开

  1. alter table products_A add constraint products_pk primary key(prod_id);
创建位图连接索引:

点击(此处)折叠或打开

  1. create bitmap index sales_A_bjix
  2. on sales_A
    ( pr.prod_id, pm.promo_id, ch.channel_id )
    from sales_A a, products_A pr, promotions_A pm, channels_A ch
    where a.prod_id = pr.prod_id
      and a.promo_id = pm.promo_id
      and a.channel_id = ch.channel_id
    tablespace sh
    nologging;
查看报告:

点击(此处)折叠或打开

  1. column index_name format a15
  2. column inner_table format a15
    column inner_col format a15
    column outer_table format a15
    column outer_col format a15
    select index_name, inner_table_name inner_table, inner_table_column inner_col,
      outer_table_name outer_table, outer_table_column outer_col
    from user_join_ind_columns
    where index_name = 'SALES_A_BJIX';

INDEX_NAME      INNER_TABLE     INNER_COL       OUTER_TABLE     OUTER_COL
--------------- --------------- --------------- --------------- ---------------
SALES_A_BJIX    SALES_A         PROD_ID         PRODUCTS_A      PROD_ID
SALES_A_BJIX    SALES_A         PROMO_ID        PROMOTIONS_A    PROMO_ID
SALES_A_BJIX    SALES_A         CHANNEL_ID      CHANNELS_A      CHANNEL_ID

查看新的执行计划
结论:位图连接索引性能更佳。
注意:当where条件中包含位图连接索引的相关列的筛选条件时(上例中是prod_id=27),才会使用位图连接索引。如果没有这一句,将走全表扫描。

转载地址:http://ufikl.baihongyu.com/

你可能感兴趣的文章
Nginx 配置详解(学习笔记二)
查看>>
C#使用Xamarin开发可移植移动应用(2.Xamarin.Forms布局,本篇很长,注意)附源码
查看>>
查看安卓APK源码破解
查看>>
JavaScript权威指南 - 函数
查看>>
Android Studio Failed to open zip file
查看>>
Kubernetes 学习笔记(二)--- K8S应用快速入门
查看>>
mysql进阶(六)
查看>>
云场景实践研究第84期:东润环能
查看>>
面试 -- 数字签名与数字证书
查看>>
Java Web基础入门
查看>>
Android2.2 API 中文文档系列(6) —— ImageView
查看>>
Bootstrap<基础九>辅助类
查看>>
浅谈AndroidManifest.xml与R.java及各个目录的作用
查看>>
Facebook应用新增照相功能 越来越像Snapchat
查看>>
什么是探索性软件测试
查看>>
LoadRunner多场景的串行执行以及定时执行
查看>>
不被注意的细节 WiFi密码暗藏巨大隐患
查看>>
Java核心技术卷I基础知识3.7.3 文件输入与输出
查看>>
如何在 Linux 上运行命令前临时清空 Bash 环境变量
查看>>
《例说51单片机(C语言版)(第3版)》一1.2 8051基础知识
查看>>