Oracle 星型查询转换解析

一.简介

星型查询是一种业务的应用,星型查询转换的核心思想是将原本的星型连接查询重写成更高效的形式。有些业务刚好满足如下的结构,我们可以使用星型查询。

  1. 子查询转换:将针对维度表的过滤条件转化为对事实表的子查询,这样可以避免直接连接到维度表,减少I/O和CPU消耗。
  2. 位图索引使用:在事实表的外键列上创建位图索引(Bitmap Indexes)。位图索引非常适合存储和检索少量的值,它们在处理大量行但少量唯一值的列时特别有效。
  3. 隐式重写SQL语句:优化器在执行查询时会自动识别是否可以应用星型转换,并对SQL语句进行隐式的重写,以利用位图索引和子查询转换。

二.结构

星型查询的基本结构是一张表和多张表进行连接,也就是一对多的关系,为了区分这些表,我们把一对多中的一叫做 事实表 把一对多中的多叫做 维度表

三.举例

1.配置数据库支持星型查询

alter system set star_transformation_enabled = TRUE;

为什么默认是关闭的?  --如果默认打开的话,每个语句CBO都会考虑要不要使用星型查询,成本是比较大的,所以在生产环境中如果想要使用星型查询,不建议在实例级打开,建议在会话级别打开。

alter session set  star_transformation_enabled=true;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值