SQL语句的处理方法及装置制造方法及图纸

技术编号:34749810 阅读:33 留言:0更新日期:2022-08-31 18:44
本说明书实施例提供一种SQL语句的处理方法及装置,在SQL语句的处理方法中,获取待处理的目标SQL语句,其中包括主查询语句和子查询语句。该子查询语句通过在其查询选择子句中包括分组聚合函数,在其查询源表子句中包括目标表,从而构建基于所述目标表的目标视图。该主查询语句的查询源表子句包。该等价改写至少包括,利用对应的窗口函数替换分组聚合函数,并从主查询语句的查询源表子句中删除目标表。从主查询语句的查询源表子句中删除目标表。从主查询语句的查询源表子句中删除目标表。

【技术实现步骤摘要】
SQL语句的处理方法及装置


[0001]本说明书一个或多个实施例涉及数据库领域,尤其涉及一种SQL语句的处理方法及装置。

技术介绍

[0002]近年来随着计算机及数据库的发展,SQL(Structure Query Languge,结构化查询语言)作为一种数据库专用的计算机编程语言得到了广泛使用,成为了最重要也是最常用的关系数据库查询语言。
[0003]在现有的数据库查询技术中,一些 SQL语句的执行,需要对直接或间接包含相同数据表的两个对象(比如,两个视图或者一个视图和一个数据表)建立连接,而该连接的建立需要对数据表进行重复扫描,由此会产生不必要的开销,这使得查询优化器无法制定出最优的执行计划。
[0004]因此,需要提供一种针对SQL语句进行处理方案,以便于查询优化器可以基于处理后的SQL语句制定出更高效的执行计划。

技术实现思路

[0005]本说明书一个或多个实施例描述了一种SQL语句的处理方法及装置,有助于查询优化器制定出更高效的执行计划。
[0006]第一方面,提供了一种SQL语句的处理方法,包本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种SQL语句的处理方法,包括:获取待处理的目标SQL语句,其中包括主查询语句和子查询语句;所述子查询语句通过在其查询选择子句中包括分组聚合函数,在其查询源表子句中包括目标表,从而构建基于所述目标表的目标视图;所述分组聚合函数用于进行目标聚合运算;所述主查询语句的查询源表子句包括所述目标视图和所述目标表;对所述目标SQL语句进行等价改写,得到改写后的SQL语句;所述等价改写至少包括,利用对应的窗口函数替换所述分组聚合函数,并从所述主查询语句的查询源表子句中删除所述目标表;其中,所述窗口函数用于针对输入表的每一个数据行,对其所属窗口内的各数据行进行所述目标聚合运算,并将对应的聚合结果记录到新增列的对应行中。2.根据权利要求1所述的方法,还包括:向查询优化器发送所述改写后的SQL语句,以使得所述查询优化器基于所述改写后的SQL语句,制定目标执行计划。3.根据权利要求1所述的方法,其中,所述方法通过查询优化器执行;所述方法还包括:基于所述改写后的SQL语句,制定目标执行计划。4.根据权利要求1所述的方法,其中,所述分组聚合函数包括以下之一:求和函数、求平均函数、求最大值函数、求最小值函数和计数函数。5.根据权利要求1所述的方法,其中,所述主查询语句还包括查询条件子句,其中至少包括针对所述目标视图和目标表设定的等值连接条件;所述子查询语句还包括分组子句,所述分组子句中的分组表达式用于确定出所述分组聚合函数的分组;在所述对所述目标SQL语句进行等价改写之前,还包括:判断所述目标SQL语句是否满足预设的改写条件;其中,所述预设的改写条件至少包括,所述等值连接条件中等号两边的两个表达式同构,且所述分组表达式是所述两个表达式之一;在满足所述预设的改写条件的情况下,对所述目标SQL语句进行等价改写;所述等价改写还包括,将所述分组表达式作为所述窗口函数的窗口划分参数;删除所述分组子句,删除所述等值连接条件,并且针对所述分组表达式中的列对应的同构列添加非空约束。6.根据权利要求5所述的方法,其中,所述子查询语句的查询源表子句还包括其它表;所述预设的改写条件还包括,所述目标表和所述其它表是无损连接;所述无损连接是指在所述目标表的行数不发生变化下的连接。7.根据权利要求1所述的方法,其中,所述子查询语句还包括查询条件子句,且其中的目标查询条件为所述主查询语句的查询条件子句中的若干查询条件之一;所述等价改写还包括,从所述主查询语句的查询条件子句中删除所述目标查询条件。8.根据权利要求1所述的方法,其中,所述等价改写还包括,将所述主查询语句和子查询语句中包含的所述目标表中的各个列,均添加到所述子查询语句的查询选择子句中,并且将所述主查询语句中包含的所述目标表中的各个列替换为所述目标视图中对应的各个列。9.一种SQL语句的处理方法,包括:获取待处理的目标SQL语句,其中包括主查询语句和两个子查询语句;所述两个子查询
语句分别通过在各自的查询选择子句中包括不同的两个分组聚合函数,在各自的查询源表子句中包括目标表,从而构建基于所述目标表的不同的两个视图;所述主查询语句的查询源表子句包括所述两个视图;对所述目标SQL语句进行等价改写;所述等价改写至少包括,对于所述两个子查询语句中的第一子查询语句,将对应于第二子查询语句的第二分组聚合函数添加到其中的查询选择子句中,得到更新的第一子查询语句;基于对应于所述第二分组聚合函数的窗口函数,以及所述更新的第一子查询语句,生成用于构建目标视图的目标子查询语句,并用其替换所述两个子查询语句;其中,所述窗口函数用于针对输入表的每一个数据行,对其所属窗口内的各数据行进行对应于所述第二分组聚合函数的聚合运算,并将对应的聚合结果记录到新增列的对应行中。10.根据权利要求9所述的方法,其中,所述更新的第一子查询语句用于构建中间视图;所述生成用于构建目标视图的目标子查询语句,包括:通过在其查询选择子句中包括所述窗口函数,在其查询源表子句中包括所述中间视图,生成用于构建目标视图的目标子查询语句。11.根据权利要求9所述的方法,其中,所述主查询语句还包括查询条件子句,其中至少包括针对所述两个视图设定的等值连接条件;所述第一子查询语句还包括第一分组子句,所述第一分组子句中的第一分组表达式,用于确定出对应的第一分组聚合函数的分组;在所述对所述目标SQL语句进行等价改写之前,还包括:判断所述目标SQL语句是否满足预设的改写条件;其中,所述预设的改写条件至少包括,所述等值连接条件中等号两边的两个表达式与所述第一分组表达式同构;在满足预设的改写条件的情况下,对所述目标SQL语句进行等价改写;所述等价改写还包括,删除所述等值连接条件,并且针对所述第一分组表达式中的列对应的同构列添加非空约束。12.根据权利要求9所述的方法,其中,所述主查询语句还包括查询条件子句,其中至少包括针对所述两个视图设定的等值连接条件;所述第一子查询语句还包括第一分组子句,其中的第一分组表达式用于确定出对应的第一分组聚合函数的分组;所述第二子查询语句还包括第二分组子句,其中的第二分组表达式用于确定出所述第二分组聚合函数的分组;在所述对所述目标SQL语句进行等价改写之前,还包括:判断所述目标SQL语句是否满足预设的改写条件;其中,所述预设的改写条件至少包括,所述第二分组表达式中的列为所述第一分组表达式中的列的子集,且所述等值连接条件中等号两边的两个表达式与所述第二分组表达式同构;在满足预设的改写条件的情况下,对所述目标SQL语句进行等价改写;所述等价改写还包括,删除所述等值连接条件,并且针对所述第二分组表达式中的列对应的同构列添加非空约束,以及将所述第二分组表达式作为所述窗口函数的窗口划分参数。13.根据权利要求11或12所述的方法,其中,所述第一子查询语句还包括第一查询条件子句;所述第二子查询语句还包括第二查询条件子句;所述预设的改写条件还包括,所述第一和第二查询条件子句中包括的查询条件相同。
14.根据权利要求9所述的方法,其中,所述等价改写还包括,将所述主查询语句和两个子查询语句中包含的所述目...

【专利技术属性】
技术研发人员:施文俊王国平朱涛
申请(专利权)人:北京奥星贝斯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1