[发明专利]一种SQL语句优化方法、装置、设备及存储介质在审
申请号: | 202011301323.6 | 申请日: | 2020-11-19 |
公开(公告)号: | CN112286964A | 公开(公告)日: | 2021-01-29 |
发明(设计)人: | 扈天阳;朱仲颖;韩朱忠 | 申请(专利权)人: | 上海达梦数据库有限公司 |
主分类号: | G06F16/2453 | 分类号: | G06F16/2453 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 孟金喆 |
地址: | 201203 上海*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 sql 语句 优化 方法 装置 设备 存储 介质 | ||
本发明公开了一种SQL语句优化方法、装置、设备及存储介质。该方法包括:获取用户输入的SQL查询语句;若所述SQL查询语句满足第一预设条件,则获取所述SQL查询语句中的可优化视图,其中,所述可优化视图包括公用表达式;根据所述可优化视图确定最终过滤条件;将所述最终过滤条件添加至目标视图中,以完成SQL语句优化。通过本发明的技术方案,能够对公用表达式增加过滤条件优化SQL语句,减小公用表达式的查询范围,从而减少中间结果集的查询规模,提升整条语句的查询执行效率。
技术领域
本发明实施例涉及数据库技术领域,尤其涉及一种SQL语句优化方法、装置、设备及存储介质。
背景技术
结构化查询语言(Structured Query Language,SQL),是一种数据库操作语言,用于存取数据以及查询、更新和管理关系数据库系统。
嵌套SQL语句如果层次过多,会使SQL语句难以阅读和维护。因此,会使用一个SQL语句定义一个公用表达式(CTE,COMMON TABLE EXPRESSION),该CTE在整个SQL查询中会被反复用到,这样可以提高SQL 语句的可维护性,同时CTE要比临时表的效率高很多。因此CTE查询是数据库中常见的一种查询。
通常,数据库会先对CTE中的数据进行收集,供之后的语句使用。由于要方便之后根据实际需求来使用,所以CTE的查询范围较大,致使CTE子句中处理的数据一般会比较多,这种传统实现方式的性能会非常低,并且之后语句使用CTE时,要筛选的数据较多,因此查询效率会更低。
发明内容
本发明实施例提供一种SQL语句优化方法、装置、设备及存储介质,以实现能够对公用表达式增加过滤条件优化SQL语句,减小公用表达式的查询范围,从而减少中间结果集的查询规模,提升整条语句的查询执行效率。
第一方面,本发明实施例提供了一种SQL语句优化方法,包括:
获取用户输入的SQL查询语句;
若所述SQL查询语句满足第一预设条件,则获取所述SQL查询语句中的可优化视图,其中,所述可优化视图包括公用表达式;
根据所述可优化视图确定最终过滤条件;
将所述最终过滤条件添加至目标视图中,以完成SQL语句优化。
进一步的,所述根据可优化视图确定最终过滤条件,包括:
若所述可优化视图中存在等值连接条件,且所述等值连接条件一侧为公用表达式,所述等值连接条件另一侧为单一对象,则根据所述单一对象确定第一过滤条件;
将所述等值连接条件和所述第一过滤条件确定IN表达式;
根据所述IN表达式确定最终过滤条件。
进一步的,所述根据IN表达式确定最终过滤条件,包括:
若所述可优化视图中存在第二过滤条件,则获取所述第二过滤条件,通过 AND连接所述IN表达式和所述第二过滤条件确定所述目标过滤条件;
若所述可优化视图中不存在所述第二过滤条件,则将所述IN表达式作为所述目标过滤条件;
将同一可优化视图对应的所述目标过滤条件用OR连接得到最终过滤条件。
进一步的,所述第一预设条件包括:
所述SQL查询语句包含公用表达式、SQL查询语句不支持集合查询且不支持外连接,和SQL查询语句中除with as语句外的其它语句的过滤条件中不包含子查询语句且不包含OR运算符。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海达梦数据库有限公司,未经上海达梦数据库有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011301323.6/2.html,转载请声明来源钻瓜专利网。