【技术实现步骤摘要】
SQL语句的处理方法及装置
本专利技术实施例涉及数据库
,更具体地,涉及一种SQL语句的处理方法及装置。
技术介绍
结构化查询语言(StructuredQueryLanguage)简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。SQL语句中会包含表达式,并且会存在重复的表达式,在SQL语句的解析过程中,首先计算表达式,再做后续计算,但是并没有缓存表达式计算的结果。例如SQL语句:groupbya+b,算完了a+b之后,接着做分组计算(groupby),不管后面是否会用到a+b,都不会缓存a+b的结果。对于重复的表达式,如果数据分析引擎每次都做计算,数据分析引擎会做大量的冗余计算,数据分析引擎处理的数据量越大,冗余计算就越多。
技术实现思路
本专利技术实施例提供一种克服上述问题或者至少部分地解决上述问题的SQL语句的处理方法及装置。第一个方面,本专利技术实施例提供一种SQL语句的处理方法,包括:利用Planner计算组件生成SQL语句的执行计划,所述执行计划用于表征各计算组件的执行顺序,同一类型的计算组件属于同一执行顺位;从第一执行顺位的计算组件开始,根据执行计划中是否存在AggNode计算组件,查询当前计算组件与后续执行顺位的其他计算组件之间存在的重复表达式;若所述执行计划中不存在AggNode计算组件,则将所述重复表达式填入当前计算组件中的表达式列表中,将其他计算组件中的重复表达式修改为column列形式,将所述重复表达式的计算结果和column列形式的数据位置信息映射至Sca ...
【技术保护点】
1.一种SQL语句的处理方法,其特征在于,包括:利用Planner计算组件生成SQL语句的执行计划,所述执行计划用于表征各计算组件的执行顺序,同一类型的计算组件属于同一执行顺位;从第一执行顺位的计算组件开始,根据执行计划中是否存在Agg Node计算组件,查询当前计算组件与后续执行顺位的其他计算组件之间存在的重复表达式;若所述执行计划中不存在Agg Node计算组件,则将所述重复表达式填入当前计算组件中的表达式列表中,将其他计算组件中的重复表达式修改为column列形式,将所述重复表达式的计算结果和column列形式的数据位置信息映射至Scan Node计算组件输出的预设位置。
【技术特征摘要】
1.一种SQL语句的处理方法,其特征在于,包括:利用Planner计算组件生成SQL语句的执行计划,所述执行计划用于表征各计算组件的执行顺序,同一类型的计算组件属于同一执行顺位;从第一执行顺位的计算组件开始,根据执行计划中是否存在AggNode计算组件,查询当前计算组件与后续执行顺位的其他计算组件之间存在的重复表达式;若所述执行计划中不存在AggNode计算组件,则将所述重复表达式填入当前计算组件中的表达式列表中,将其他计算组件中的重复表达式修改为column列形式,将所述重复表达式的计算结果和column列形式的数据位置信息映射至ScanNode计算组件输出的预设位置。2.根据权利要求1所述的处理方法,其特征在于,若所述执行计划中存在AggNode计算组件,则对于AggNode计算组件之前执行顺位的当前计算组件,将所述重复表达式填入当前计算组件中的表达式列表中,将其他计算组件中的重复表达式修改为column列形式,将所述重复表达式的计算结果和column列形式的数据位置信息映射至ScanNode计算组件输出的预设位置;对于AggNode计算组件之后执行顺位的当前计算组件,将所述重复表达式填入当前计算组件中的表达式列表中,将其他计算组件中的重复表达式修改为column列形式,将所述重复表达式的计算结果和column列形式的数据位置信息映射至AggNode计算组件输出的预设位置。3.根据权利要求1所述的处理方法,其特征在于,所述查询当前计算组件与后续执行顺位的其他计算组件之间存在的重复表达式,具体为:若当前计算组件为ScanNode计算组件且执行计划中不存在AggNode计算组件,则查询ScanNode计算组件与后续执行顺序的所有计算机组件之间存在的重复表达式;若当前计算组件为ScanNode计算组件且执行计划中存在AggNode计算组件,则查询ScanNode计算组件与AggNode计算组件中的特定表达式之间存在的重复表达式;其中,所述特定表达式为AggNode计算组件中分组计算的表达式以及聚集函数参数中的表达式。4.根据权利要求1所述的处理方法,其特征在于,所述查询当前计算组件与后续执行顺位的其他计算组件之间存在的重复表达式,具体为:若当前计算组件为JoinNode计算组件,则根据SQL语句中join的顺序生成JoinNode计算组件的二叉树,采样后续遍历的方式查询当前计算组件与父系节点直至根节点中的表达式以及根节点后续执行顺位的计算组件之间存在的重复表达式;同时,若所述执行计划中存在AggNode计算组件,还查询当前计算组件与AggNode计算组件中的特定表达式之间...
【专利技术属性】
技术研发人员:刘垚,何献青,田俊,
申请(专利权)人:北京东方国信科技股份有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。