[发明专利]SQL语句的执行方法、装置、设备和存储介质有效
申请号: | 201911278107.1 | 申请日: | 2019-12-12 |
公开(公告)号: | CN110990423B | 公开(公告)日: | 2023-04-18 |
发明(设计)人: | 刘志勇;张钦;韩朱忠 | 申请(专利权)人: | 上海达梦数据库有限公司 |
主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/2455;G06F16/28 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 孟金喆 |
地址: | 201203 上*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | sql 语句 执行 方法 装置 设备 存储 介质 | ||
本发明实施例公开了一种SQL语句的执行方法、装置、设备和存储介质。所述方法包括:获取SQL语句的原始关系树;依次判断所述原始关系树中的各原始节点是否为目标过滤节点,并在判定所述原始节点为目标过滤节点时,删除与所述原始节点对应的第一目标节点的第一目标运算条件中包含的至少一个目标列名,以得到新的关系树;根据所述新的关系树执行所述SQL语句。本发明实施例通过采用上述技术方案,能够减少SQL语句进行分组计算的次数,提高数据库的查询效率。
技术领域
本发明涉及数据库技术领域,尤其涉及一种SQL语句的执行方法、装置、设备和存储介质。
背景技术
结构化查询语言(Structured Query Language,SQL)是最重要的也是最常用的关系型数据库操作语言。
分组子句(GROUP BY子句)是SQL标准中用于对数据进行分组处理的子句。当前通用的数据库技术中,在实现一个包含GROUP BY子句的SQL查询语句时,无论SQL查询语句所对应的表结构和数据特征是怎样的,都需要读取表中的数据并将其按照GROUP BY子句指定的分组项来进行分组。
但是,当数据库实际面对较复杂的SQL查询语句时,采用当前通用的分组方式进行分组往往需要花费较多的时间,使得数据库的查询效率较低。
发明内容
有鉴于此,本发明实施例提供一种SQL语句的执行方法、装置、设备和存储介质,以减少执行SQL查询语句所花费的时间,提升数据库的查询效率。
第一方面,本发明实施例提供了一种SQL语句的执行方法,包括:
获取SQL语句的原始关系树;
依次判断所述原始关系树中的各原始节点是否为目标过滤节点,并在判定所述原始节点为目标过滤节点时,删除与所述原始节点对应的第一目标节点的第一目标运算条件中包含的至少一个目标列名,以得到新的关系树;
根据所述新的关系树执行所述SQL语句;
其中,所述目标过滤节点的过滤条件中包含常量子表达式且不包含或运算和非运算;与所述原始节点对应的第一目标节点包括所述原始节点的祖先节点中的分组节点,所述第一目标运算条件包含至少列名,所述至少两个列名中存在目标列名,所述目标列名为所述常量子表达式中的常量列列名或所述常量列列名的别名。
第二方面,本发明实施例提供了一种SQL语句的执行装置,包括:
获取模块,用于获取SQL语句的原始关系树;
删除模块,用于依次判断所述原始关系树中的各原始节点是否为目标过滤节点,并在判定所述原始节点为目标过滤节点时,删除与所述原始节点对应的第一目标节点的第一目标运算条件中包含的至少一个目标列名,以得到新的关系树;
执行模块,用于根据所述新的关系树执行所述SQL语句;
其中,所述目标过滤节点的过滤条件中包含常量子表达式且不包含或运算和非运算;与所述原始节点对应的第一目标节点包括所述原始节点的祖先节点中的分组节点,所述第一目标运算条件包含至少列名,所述至少两个列名中存在目标列名,所述目标列名为所述常量子表达式中的常量列列名或所述常量列列名的别名。
第三方面,本发明实施例提供了一种计算机设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明实施例所述的SQL语句的执行方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行实现如本发明实施例所述的SQL语句的执行方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海达梦数据库有限公司,未经上海达梦数据库有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911278107.1/2.html,转载请声明来源钻瓜专利网。