使用位图连接索引优化OLAP查询

本文涉及的产品
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 位图连接索引,就是将事实表和维度表的ROWID提前进行映射,省去了连接时的开销。 下面将位图连接索引和一般的位图索引进行比较。 看以下SQL语句: 点击(此处)折叠或打开 select s.
位图连接索引,就是将事实表和维度表的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),才会使用位图连接索引。如果没有这一句,将走全表扫描。



相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
打赏
0
0
0
0
43
分享
相关文章
拉卡拉 x Apache Doris:统一金融场景 OLAP 引擎,查询提速 15 倍,资源直降 52%
拉卡拉早期基于 Lambda 架构构建数据系统面临存储成本高、实时写入性能差、复杂查询耗时久、组件维护复杂等问题。为此,拉卡拉选择使用 Apache Doris 替换 Elasticsearch、Hive、Hbase、TiDB、Oracle / MySQL 等组件,实现了 OLAP 引擎的统一、查询性能提升 15 倍、资源减少 52% 的显著成效。
拉卡拉 x Apache Doris:统一金融场景 OLAP 引擎,查询提速 15 倍,资源直降 52%
云原生数据仓库AnalyticDB PostgreSQL同一个SQL可以实现向量索引、全文索引GIN、普通索引BTREE混合查询,简化业务实现逻辑、提升查询性能
本文档介绍了如何在AnalyticDB for PostgreSQL中创建表、向量索引及混合检索的实现步骤。主要内容包括:创建`articles`表并设置向量存储格式,创建ANN向量索引,为表增加`username`和`time`列,建立BTREE索引和GIN全文检索索引,并展示了查询结果。参考文档提供了详细的SQL语句和配置说明。
137 2
实时数仓 Hologres操作报错合集之在尝试访问DataHub时,报错连接超时,该怎么处理
在使用阿里云实时数仓Hologres时,可能会遇到不同类型的错误。例如:1.内存超限错误、2.字符串缓冲区扩大错误、3.分区导入错误、4.外部表访问错误、5.服务未开通或权限问题、6.数据类型范围错误,下面是一些常见错误案例及可能的原因与解决策略的概览。
实时数仓 Hologres操作报错合集之遇到报错:连接到 FE 失败,剩余的连接槽保留用于非复制超级用户连接,该怎么处理
在使用阿里云实时数仓Hologres时,可能会遇到不同类型的错误。例如:1.内存超限错误、2.字符串缓冲区扩大错误、3.分区导入错误、4.外部表访问错误、5.服务未开通或权限问题、6.数据类型范围错误,下面是一些常见错误案例及可能的原因与解决策略的概览。
实时数仓 Hologres产品使用合集之当使用动态分区管理功能按日期进行分区后,通过主键和segment_key进行时间范围查询性能变差是什么原因
实时数仓Hologres的基本概念和特点:1.一站式实时数仓引擎:Hologres集成了数据仓库、在线分析处理(OLAP)和在线服务(Serving)能力于一体,适合实时数据分析和决策支持场景。2.兼容PostgreSQL协议:Hologres支持标准SQL(兼容PostgreSQL协议和语法),使得迁移和集成变得简单。3.海量数据处理能力:能够处理PB级数据的多维分析和即席查询,支持高并发低延迟查询。4.实时性:支持数据的实时写入、实时更新和实时分析,满足对数据新鲜度要求高的业务场景。5.与大数据生态集成:与MaxCompute、Flink、DataWorks等阿里云产品深度融合,提供离在线
实时数仓Hologres容器镜像问题之优化私有化部署如何解决
容器镜像常遇问题包括:将过多组件打包至单一容器、使用systemd导致状态不一致、私有部署中传输未优化的镜像包及基础镜像频繁下发致网络拥堵。应采用轻量化基础镜像,明确镜像版本,并利用镜像层复用来优化。[了解更多](https://developer.aliyun.com/ask/666077)。 避免容器臃肿的方法是选用精简基础镜像,固定镜像版本,并通过镜像层复用来减少重复内容,实现高效部署。[查看详情](https://developer.aliyun.com/ask/666078)。
139 0
实时数仓 Hologres产品使用合集之如何使用Flink的sink连接
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
实时数仓 Hologres产品使用合集之如何查看并分析历史查询语句
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
实时数仓 Hologres产品使用合集之怎么查询版本
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
实时数仓 Hologres产品使用合集之如何找回之前的SQL查询代码
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等