[发明专利]一种SQL语句优化方法、装置、设备及存储介质在审
申请号: | 202011301323.6 | 申请日: | 2020-11-19 |
公开(公告)号: | CN112286964A | 公开(公告)日: | 2021-01-29 |
发明(设计)人: | 扈天阳;朱仲颖;韩朱忠 | 申请(专利权)人: | 上海达梦数据库有限公司 |
主分类号: | G06F16/2453 | 分类号: | G06F16/2453 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 孟金喆 |
地址: | 201203 上海*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 sql 语句 优化 方法 装置 设备 存储 介质 | ||
1.一种SQL语句优化方法,其特征在于,包括:
获取用户输入的SQL查询语句;
若所述SQL查询语句满足第一预设条件,则获取所述SQL查询语句中的可优化视图,其中,所述可优化视图包括公用表达式;
根据所述可优化视图确定最终过滤条件;将所述最终过滤条件添加至目标视图中,以完成SQL语句优化。
2.根据权利要求1所述的方法,其特征在于,所述根据可优化视图确定最终过滤条件,包括:
若所述可优化视图中存在等值连接条件,且所述等值连接条件一侧为公用表达式,所述等值连接条件另一侧为单一对象,则根据所述单一对象确定第一过滤条件;
将所述等值连接条件和所述第一过滤条件确定IN表达式;
根据所述IN表达式确定最终过滤条件。
3.根据权利要求2所述的方法,其特征在于,所述根据IN表达式确定最终过滤条件,包括:
若所述可优化视图中存在第二过滤条件,则获取所述第二过滤条件,通过AND连接所述IN表达式和所述第二过滤条件确定所述目标过滤条件;
若所述可优化视图中不存在所述第二过滤条件,则将所述IN表达式作为所述目标过滤条件;
将同一可优化视图对应的所述目标过滤条件用OR连接得到最终过滤条件。
4.根据权利要求1所述的方法,其特征在于,所述第一预设条件包括:
所述SQL查询语句包含公用表达式、SQL查询语句不支持集合查询且不支持外连接,和SQL查询语句中除with as语句外的其它语句的过滤条件中不包含子查询语句且不包含OR运算符。
5.根据权利要求1所述的方法,其特征在于,若所述可优化视图的定义中包括集函数,则所述可优化视图的定义中必须包括group by语句,且不能包括:having子句、with语句、top子句、rownum相关语句、limit限定条件和层次查询语句。
6.根据权利要求1所述的方法,其特征在于,将所述最终过滤条件添加至目标视图中,以完成SQL语句优化,包括:
根据可优化视图和公用表达式类型的视图确定目标视图;
若目标视图中存在原有过滤条件,则将所述最终过滤条件以AND的连接方式添加至目标视图的原有过滤条件中,得到优化后的SQL语句;
若目标视图中不存在原有过滤条件,则将所述最终过滤条件添加至目标视图中,得到优化后的SQL语句;
对所述优化后的SQL语句进行语法和语义分析,以完成SQL语句优化。
7.一种SQL语句优化装置,其特征在于,包括:
第一获取模块,用于获取用户输入的SQL查询语句;
第二获取模块,用于若所述SQL查询语句满足第一预设条件,则获取所述SQL查询语句中的可优化视图;
确定模块,用于根据所述可优化视图确定最终过滤条件;
添加模块,用于将所述最终过滤条件添加至目标视图中,以完成SQL语句优化。
8.根据权利要求7所述的装置,其特征在于,所述确定模块,包括:
第一确定单元,用于若所述可优化视图中存在等值连接条件,且所述等值连接条件一侧为公用表达式,所述等值连接条件另一侧为单一对象,则根据所述单一对象确定第一过滤条件;
第二确定单元,用于将所述等值连接条件和所述第一过滤条件确定IN表达式;
第三确定单元,用于根据所述IN表达式确定最终过滤条件。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-6中任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海达梦数据库有限公司,未经上海达梦数据库有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011301323.6/1.html,转载请声明来源钻瓜专利网。