【技术实现步骤摘要】
处理数据库查询语句的方法和装置
[0001]本公开涉及数据库
,并且更为具体地,涉及一种处理数据库查询语句的方法和装置。
技术介绍
[0002]数据库查询中经常会用到连接操作和窗口函数等查询语句以进行业务分析。某些场景中,如果数据库查询语句中的窗口函数位于该数据库查询语句的FROM子句中,那么查询优化器会先执行窗口函数、再执行连接操作,导致数据库查询语句的执行效率较低。
技术实现思路
[0003]有鉴于此,本公开提供一种处理数据库查询语句的方法和装置,以提升数据库查询语句的执行效率。
[0004]第一方面,提供一种处理数据库查询语句的方法,包括:接收第一数据库查询语句,所述第一数据库查询语句包括FROM子句中的第一视图,以及所述第一视图与第一数据表的连接操作,所述第一视图中封装有第一窗口函数;根据所述第一数据库查询语句生成第二数据库查询语句,所述第二数据库查询语句与所述第一数据库查询语句等价,所述第二数据库查询语句包括FROM子句中的第二视图,所述第二视图中封装有所述第一窗口函数,以及所述第一数据表与第二数据表的连接操作,所述第二数据表为所述第一视图对应的数据表。
[0005]可选地,所述根据所述第一数据库查询语句生成第二数据库查询语句,包括:判断所述第一视图与所述第一数据表的连接操作能否下推到所述第一视图的内部;如果所述第一视图与所述第一数据表的连接操作能下推到所述第一视图的内部,则根据所述第一数据库查询语句,将所述第一视图与所述第一数据表的连接操作下推到所述第一视图的内部,得 ...
【技术保护点】
【技术特征摘要】
1.一种处理数据库查询语句的方法,包括:接收第一数据库查询语句,所述第一数据库查询语句包括FROM子句中的第一视图,以及所述第一视图与第一数据表的连接操作,所述第一视图中封装有第一窗口函数;根据所述第一数据库查询语句生成第二数据库查询语句,所述第二数据库查询语句与所述第一数据库查询语句等价,所述第二数据库查询语句包括FROM子句中的第二视图,所述第二视图中封装有所述第一窗口函数,以及所述第一数据表与第二数据表的连接操作,所述第二数据表为所述第一视图对应的数据表。2.根据权利要求1所述的方法,所述根据所述第一数据库查询语句生成第二数据库查询语句,包括:判断所述第一视图与所述第一数据表的连接操作能否下推到所述第一视图的内部;如果所述第一视图与所述第一数据表的连接操作能下推到所述第一视图的内部,则根据所述第一数据库查询语句,将所述第一视图与所述第一数据表的连接操作下推到所述第一视图的内部,得到所述第二数据库查询语句。3.根据权利要求2所述的方法,所述判断所述第一视图与所述第一数据表的连接操作能否下推到所述第一视图的内部,包括:判断所述第一视图与所述第一数据表是否满足第一条件,在满足所述第一条件的情况下,则认为所述第一视图与所述第一数据表的连接操作能下推到所述第一视图的内部;其中,所述第一条件包括:所述第一视图与所述第一数据表之间存在等值连接条件,且所述等值连接条件中的关于所述第一视图的表达式依赖于所述第一窗口函数中的分组字段。4.根据权利要求1所述的方法,所述方法还包括:检查第一连接条件中的关于所述第一数据表的表达式是否满足唯一性,其中,所述第一连接条件为所述第一视图和所述第一数据表的连接操作对应的连接条件;如果关于所述第一数据表的表达式不满足唯一性,在所述第一窗口函数的分组字段中添加所述第一数据表的唯一键。5.根据权利要求4所述的方法,在所述检查第一连接条件中的关于所述第一数据表的表达式是否满足唯一性之后,所述方法还包括:如果关于所述第一数据表的表达式不满足唯一性,计算所述第二数据库查询语句的执行代价,以确定是否生成所述第二数据库查询语句。6.根据权利要求1所述的方法,在所述根据所述第一数据库查询语句生成第二数据库查询语句之前,所述方法还包括:检查所述第一视图的合法性;所述根据所述第一数据库查询语句生成第二数据库查询语句,包括:在所述第一视图合法的情况下,根据所述第一数据库查询语句生成所述第二数据库查询语句。7.根据权利要求3所述的方法,在所述第一视图中还封装有第二窗口函数的情况下,所述第一条件包括:所述第一视图与所述第一数据表之间存在等值连接条件,且所述等值连接条件中的关于所述第一视图的表达式依赖于所述第一窗口函数中的分组字段和所述第二窗口函数中的分组字段的交集。
8.根据权利要求1所述的方法,所述第二视图中还封装有仅关于所述第一数据表的过滤条件。9.一种处理数据库查询语句的装置,包括:...
【专利技术属性】
技术研发人员:施文俊,朱涛,
申请(专利权)人:北京奥星贝斯科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。