[发明专利]SQL语句的处理方法及装置有效
申请号: | 201910171270.1 | 申请日: | 2019-03-07 |
公开(公告)号: | CN110032574B | 公开(公告)日: | 2021-02-02 |
发明(设计)人: | 刘垚;何献青;田俊 | 申请(专利权)人: | 北京东方国信科技股份有限公司 |
主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/2455 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王庆龙;苗晓静 |
地址: | 100102 北京市朝阳区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | sql 语句 处理 方法 装置 | ||
1.一种SQL语句的处理方法,其特征在于,包括:
利用Planner计算组件生成SQL语句的执行计划,所述执行计划用于表征各计算组件的执行顺序,同一类型的计算组件属于同一执行顺位;
从第一执行顺位的计算组件开始,根据执行计划中是否存在Agg Node计算组件,查询当前计算组件与后续执行顺位的其他计算组件之间存在的重复表达式;
若所述执行计划中不存在Agg Node计算组件,则将所述重复表达式填入当前计算组件中的表达式列表中,将其他计算组件中的重复表达式修改为column列形式,将所述重复表达式的计算结果和column列形式的数据位置信息映射至Scan Node计算组件输出的预设位置;
所述Planner计算组件是根据SQL语句产生执行计划的计算组件;
所述Agg Node计算组件是用于做分组、聚集运算、过滤的计算组件;
所述Scan Node计算组件是用于从表中读取数据,并做过滤的计算组件。
2.根据权利要求1所述的处理方法,其特征在于,若所述执行计划中存在Agg Node计算组件,则对于Agg Node计算组件之前执行顺位的当前计算组件,将所述重复表达式填入当前计算组件中的表达式列表中,将其他计算组件中的重复表达式修改为column列形式,将所述重复表达式的计算结果和column列形式的数据位置信息映射至Scan Node计算组件输出的预设位置;
对于Agg Node计算组件之后执行顺位的当前计算组件,将所述重复表达式填入当前计算组件中的表达式列表中,将其他计算组件中的重复表达式修改为column列形式,将所述重复表达式的计算结果和column列形式的数据位置信息映射至Agg Node计算组件输出的预设位置。
3.根据权利要求1所述的处理方法,其特征在于,所述查询当前计算组件与后续执行顺位的其他计算组件之间存在的重复表达式,具体为:
若当前计算组件为Scan Node计算组件且执行计划中不存在Agg Node计算组件,则查询Scan Node计算组件与后续执行顺序的所有计算机组件之间存在的重复表达式;
若当前计算组件为Scan Node计算组件且执行计划中存在Agg Node计算组件,则查询Scan Node计算组件与Agg Node计算组件中的特定表达式之间存在的重复表达式;
其中,所述特定表达式为Agg Node计算组件中分组计算的表达式以及聚集函数参数中的表达式。
4.根据权利要求1所述的处理方法,其特征在于,所述查询当前计算组件与后续执行顺位的其他计算组件之间存在的重复表达式,具体为:
若当前计算组件为Join Node计算组件,则根据SQL语句中join的顺序生成Join Node计算组件的二叉树,采样后续遍历的方式查询当前计算组件与父系节点直至根节点中的表达式以及根节点后续执行顺位的计算组件之间存在的重复表达式;
同时,若所述执行计划中存在Agg Node计算组件,还查询当前计算组件与Agg Node计算组件中的特定表达式之间存在的重复表达式;
其中,所述特定表达式为Agg Node计算组件中分组计算的表达式以及聚集函数参数中的表达式;
所述Join Node计算组件是用于计算两个表的关联的计算组件。
5.根据权利要求1所述的处理方法,其特征在于,所述查询当前计算组件与后续执行顺位的其他计算组件之间存在的重复表达式,具体为:
若当前计算组件为Agg Node计算组件,则查询当前计算组件中分组计算涉及到的所有表达式以及修改为column列形式的表达式,共同作为参考表达式,查询后续执行顺位的计算组件中与所述参考表达式重复的表达式。
6.根据权利要求5所述的处理方法,其特征在于,还包括:
将重复表达式填入Agg Node计算组件中的表达式列表中,将其他计算组件中的重复表达式修改为column列形式,将所述重复表达式的计算结果和column列形式的数据位置信息映射至Agg Node计算组件输出的预设位置;
同时,将分组计算中的非重复的表达式计算结果映射至Agg Node计算组件输出的预设位置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京东方国信科技股份有限公司,未经北京东方国信科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910171270.1/1.html,转载请声明来源钻瓜专利网。