LightDB - no_star_transformation

2023-12-01 06:36
文章标签 transformation star lightdb

本文主要是介绍LightDB - no_star_transformation,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LightDB 从23.4开始支持 no_star_transformation hint。
在Oracle 中no_star_transformation hint 用于提示优化器不执行星型转换。LightDB 不支持星型转换,因此此hint总会起效,下面先介绍下星型转换,然后介绍下hint的用法。

Oracle 星型转换

星型转换是一种优化器转换,它避免了对星型模式中事实表的全表扫描(星型模式将数据分为事实表和维度表)。

在事实表和维度表的连接中,星型转换可以避免对事实表的全表扫描。星型转换通过位图索引来获取事实表上需要的行(由维度表过滤),从而提高性能。

在某些情况下,查询在维度表的非关联列上有过滤条件。通过组合这些过滤条件可以显著减少数据库需要处理的来自事实表的数据集。

转换后查询按如下两阶段执行:

  • 第一阶段是由事实表利用位图索引的位图信息 (或者由 B*树索引的 ROWID 转换得来的位图信息)进行位图操作,进而获得相应数据集;
  • 第二阶段则将第一阶段获得的数据集与维度表进行关联,获取最终查询结果。

使用示例

初始化

CREATE TABLE times (time_id NUMBER PRIMARY KEY,calendar_quarter_desc VARCHAR2(20));CREATE TABLE customers (cust_id NUMBER PRIMARY KEY,cust_city VARCHAR2(20),cust_state_province VARCHAR2(20));CREATE TABLE channels (channel_id NUMBER PRIMARY KEY,channel_class VARCHAR2(20),channel_desc VARCHAR2(20));CREATE TABLE sales (time_id NUMBER REFERENCES times(time_id),cust_id NUMBER REFERENCES customers(cust_id),channel_id NUMBER REFERENCES channels(channel_id),amount_sold NUMBER);-- oracle 中需要对事实表建立bitmap索引, LightDB 不支持bitmap 索引,不执行
--create bitmap index sales_i1 on sales(time_id);
--create bitmap index sales_i2 on sales(cust_id);
--create bitmap index sales_i3 on sales(channel_id); 

执行SQL

lightdb@postgres=# EXPLAIN (COSTS false) SELECT/*+no_star_transformation*/ ch.channel_class, c.cust_city, t.calendar_quarter_desc,SUM(s.amount_sold) sales_amountFROM sales s, times t, customers c, channels chWHERE s.time_id = t.time_idAND s.cust_id = c.cust_idAND s.channel_id = ch.channel_idAND c.cust_state_province = 'CA'AND ch.channel_desc in ('Internet','Catalog')AND t.calendar_quarter_desc IN ('1999-Q1','1999-Q2')GROUP BY ch.channel_class, c.cust_city, t.calendar_quarter_desc;
LOG:  lt_hint_plan:
used hint:
no_star_transformation
not used hint:
duplication hint:
error hint:QUERY PLAN                    ----------------------------------------------------------------------------
---------------------------GroupAggregateGroup Key: ch.channel_class, c.cust_city, t.calendar_quarter_desc->  SortSort Key: ch.channel_class, c.cust_city, t.calendar_quarter_desc->  Nested Loop->  Nested Loop->  Hash JoinHash Cond: (s.cust_id = c.cust_id)->  Seq Scan on sales s @"lt#0"->  Hash->  Seq Scan on customers c @"lt#0"Filter: ((cust_state_province)::text 
= 'CA'::text)->  Index Scan using times_pkey on times t @"lt#0"Index Cond: (time_id = s.time_id)Filter: ((calendar_quarter_desc)::text = ANY ('{1
999-Q1,1999-Q2}'::text[]))->  Index Scan using channels_pkey on channels ch @"lt#0"Index Cond: (channel_id = s.channel_id)Filter: ((channel_desc)::text = ANY ('{Internet,Catalog
}'::text[]))
(18 rows)

这篇关于LightDB - no_star_transformation的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/440169

相关文章

Python QT实现A-star寻路算法

目录 1、界面使用方法 2、注意事项 3、补充说明 用Qt5搭建一个图形化测试寻路算法的测试环境。 1、界面使用方法 设定起点: 鼠标左键双击,设定红色的起点。左键双击设定起点,用红色标记。 设定终点: 鼠标右键双击,设定蓝色的终点。右键双击设定终点,用蓝色标记。 设置障碍点: 鼠标左键或者右键按着不放,拖动可以设置黑色的障碍点。按住左键或右键并拖动,设置一系列黑色障碍点

28.8K Star,音乐新体验,开启你的高颜值音乐之旅

Hi,骚年,我是大 G,公众号「GitHub 指北」会推荐 GitHub 上有趣有用的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注。 导语 音乐是生活中不可或缺的调味品,一个好的音乐播放器能够极大地提升我们的听觉享受。今天,我要向大家推荐一个名为 YesPlayMusic 的第三方网易云音乐播放器,它不仅拥有高颜值的界面设计,还支持跨平台使用,让你的音乐体验更上一层楼

Ollama—87.4k star 的开源大模型服务框架!!

这一年来,AI 发展的越来越快,大模型使用的门槛也越来越低,每个人都可以在自己的本地运行大模型。今天再给大家介绍一个最厉害的开源大模型服务框架——ollama。 项目介绍 Ollama 是一个开源的大语言模型(LLM)服务工具,它允许用户在本地环境快速实验、管理和部署大型语言模型。它支持多种流行的开源大型语言模型,如 Llama 3.1、Phi 3、Mistral、Gemma 2 等,并且可以

Image Transformation can make Neural Networks more robust against Adversarial Examples

Image Transformation can make Neural Networks more robust against Adversarial Examples 创新点 1.旋转解决误分类 总结 可以说简单粗暴有效

牛X,试用了下 GitHub 上 2 万 Star 的第一抢票神器,3 秒钟抢到!

点击上方“朱小厮的博客”,选择“设为星标” 后台回复”加群“加入公众号专属技术群 车栗子 发自 凹非寺  量子位 报道 | 公众号 QbitAI 春节抢票正在如火如荼的进行,过年回家那肯定需要抢票,每年的抢票大战,都是一场硬战,没有一个好工具,怎么能上战场死锁呢。今天小编推荐一个Python抢票工具,送到了GitHub趋势榜第一: 项目名很干脆,就是“12306”,标星超过1.2W,来自名叫

Rdds基本操作Transformation,逐元素,map,filter,flatMap,集合运算

Rdds基本操作Transformation 转换,从之前的RDD构建一个新的RDD,map操作 逐元素map,接受一个函数,应用在RDD每一个元素,并返回一个新的RDD val lines = sc.parallelize(Array("hello","spark","hello","world","!"))      测试时候使用,从已有集合中构造一个RDD lines.foreach

vue-star评星组件开发

star文件夹下建立Star.vue,及相关的图片信息。便于组件的就近维护 Star.vue: <template><div class="star" :class="starSize"><span v-for="(itemClass,key) in itemClasses" :class="itemClass" class="star-item"></span></div></temp

多场景建模: STAR(Star Topology Adaptive Recommender)

之前,分享了一篇关于多任务学习的文章:多任务学习MTL模型:MMoE、PLE,同样的还有关于多任务学习中的多目标loss优化策略。 这篇文章则开始一个与多任务学习有着紧密联系的系列:多场景建模学习。 前言 首先,讲一下多任务学习和多场景建模的区别: 多任务学习通常是聚焦于单独一个domain(场景、领域)内的不同任务的处理,即不同任务的label空间是不同的;而多场景建模则是关注于多个do

BestCoder Round #62 (div.2)Clarke and five-pointed star(极角排序,判断五边形)

题目链接 题意:给你五个点,问这五个点是否可以组成正五边形(正五角星,等价于正五边形)。 解答:先极角排序,(让五个点按照顺时针或者逆时针的顺序)然后我们计算五条边是不是一样,然后在看对角线是不是都一样。 #include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#includ

猫头虎 分享:如何用STAR(情境、任务、行动、结果)方法来结构化回答问题?

猫头虎 分享:如何用STAR(情境、任务、行动、结果)方法来结构化回答问题? 🧠💡 今天猫头虎带您了解STAR法则的结构化魔力! 大家好!我是你们的老朋友 猫头虎 🐯。最近有不少粉丝在问我,如何在面试、职场沟通或者项目汇报中,结构化地表达观点,特别是在描述自己解决问题的能力时,如何既简洁又全面地展现出自己的专业水平。 这时候,我要强烈推荐一个超级好用的工具——STAR方法。它不仅可以帮