查询语句优化装置和查询语句优化方法

上传人:ting****789 文档编号:310007914 上传时间:2022-06-14 格式:DOCX 页数:4 大小:18.61KB
返回 下载 相关 举报
查询语句优化装置和查询语句优化方法_第1页
第1页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《查询语句优化装置和查询语句优化方法》由会员分享,可在线阅读,更多相关《查询语句优化装置和查询语句优化方法(4页珍藏版)》请在金锄头文库上搜索。

1、查询语句优化装置和查询语句优化方法专利名称:查询语句优化装置和查询语句优化方法技术领域:本发明涉及数据库查询领域,具体而言,涉及一种查询语句优化装置和一种查询语句优化方法。背景技术:如今,数据库已成为一个成熟软件系统中不可或缺的必要组成部分,而对数据库的查询操作,则是数据库系统中,最简单,最常用的操作。但是随着企业业务复杂度的不断提高,对数据库的查询操作也变得越来越复杂,这就需要编写更加复杂的数据库查询语句,即SQL语句,来访问数据库。常见的复杂SQL语句一般都包含嵌套子查询,简单的只嵌套一层,复杂的将会嵌套好几层。嵌套子查询能解决一些复杂的业务需求,但是很多时候,子查询会包含一些冗余的字段信

2、息,即在查询中没有必要出现的字段信息,这样在执行查询时,就会影响执行效率。现有的技术优化了表的关联关系,和逻辑关系,但没有优化嵌套子查询,即主从表的嵌套关系,不能从根本上解决SQL语句执行上的效率问题。因此,需要一种新的技术方案,将SQL语句子查询中的冗余字段信息过滤掉,将复杂SQL语句优化展平,从而提高SQL语句的执行效率。发明内容本发明所要解决的技术问题在于,提供一种新的技术方案,将SQL语句子查询中的冗余字段信息过滤掉,将复杂SQL语句优化展平,从而提高SQL语句的执行效率。有鉴于此,本发明提供一种查询语句优化装置,包括查询定位模块,获取所述原始查询语句中的外部查询和子查询;查询合并模块

3、,将所述外部查询和所述子查询合并为新外部查询;查询语句生成模块,根据所述新外部查询,生成新查询语句。应用本技术方案,可以定位至查询语句中的外部查询和子查询,从而将外部查询和子查询进行合并操作,去掉嵌套子查询,以实现展平、精简SQL语句的目的。在上述技术方案中,优选地,所述查询定位模块从所述原始查询语句中检索特定字符串,并根据检索到的首个特定字符串获取所述外部查询,根据检索到的其他特定字符串确定所述子查询。应用本技术方案,根据检索到的特定字符串的不同,获取到外部查询和子查询。在上述技术方案中,优选地,还包括冗余字段过滤模块,获取所述外部查询对应的第一查询字段和所述子查询对应的第二查询字段,过滤掉

4、所述第二查询字段中未包含在所述第一查询字段中的字段,所述查询合并模块还根据所述第一查询字段和经过滤后的所述第二查询字段,确定所述新外部查询对应的查询字段,所述查询语句生成模块根据所述新外部查询以及所述新外部查询的查询字段,生成所述新查询语句。应用本技术方案,对比外部查询和子查询的信息,可以将冗余字段过滤掉,生成精简的查询语句,从而提高SQL语句的执行效率。在上述技术方案中,优选地,还包括脚本对象化模块,生成所述外部查询和所述子查询的对象,所述查询合并模块将所述外部查询和所述子查询的对象合并为新外部查询的对象;对象脚本化模块,根据所述新外部查询的对象处理生成脚本,所述查询语句生成模块将所述脚本作

5、为所述新查询语句。应用本技术方案,通过脚本对象化、对象脚本化的操作,将原始的SQL语句加载到内存中进行处理,以及将新的查询对象导出给优化的SQL语句。在上述技术方案中,优选地,还包括语法校验模块,对所述新查询语句进行语法校验,并在校验成功时输出所述新查询语句,在校验失败时输出异常提示。应用本技术方案,新的查询语句在语法校验成功时,进行展平输出,在语法校验失败时,输出异常提示,从而确保展平后语句的正确性。本发明还提供了一种查询语句优化方法,包括步骤202,获取所述原始查询语句中的外部查询和子查询;步骤204,将所述外部查询和所述子查询合并为新外部查询;步骤206,根据所述新外部查询,生成新查询语

6、句。应用本技术方案,可以定位至查询语句中的外部查询和子查询,从而将外部查询和子查询进行合并操作,去掉嵌套子查询,以实现展平、精简SQL语句的目的。在上述技术方案中,优选地,所述步骤202包括从所述原始查询语句中检索特定字符串,并根据检索到的首个特定字符串获取所述外部查询,根据检索到的其他特定字符串确定所述子查询。应用本技术方案,根据检索到的特定字符串的不同,获取到外部查询和子查询。在上述技术方案中,优选地,还包括获取所述外部查询对应的第一查询字段和所述子查询对应的第二查询字段,过滤掉所述第二查询字段中未包含在所述第一查询字段中的字段;所述步骤204还包括根据所述第一查询字段和经过滤后的所述第二

7、查询字段,确定所述新外部查询对应的查询字段;步骤206包括根据所述新外部查询以及所述新外部查询的查询字段,生成所述新查询语句。应用本技术方案,对比外部查询和子查询的信息,可以将冗余字段过滤掉,生成精简的查询语句,从而提高SQL语句的执行效率。在上述技术方案中,优选地,所述步骤202还包括生成所述外部查询和所述子查询的对象;所述步骤204包括将所述外部查询和所述子查询的对象合并为新外部查询的对象;所述步骤206包括根据所述新外部查询的对象处理生成脚本,并将所述脚本作为所述新查询语句。应用本技术方案,通过脚本对象化、对象脚本化的操作,将原始的SQL语句加载到内存中进行处理,以及将新的查询对象导出给

8、优化的SQL语句。在上述技术方案中,优选地,还包括对所述新查询语句进行语法校验,并在校验成功时输出所述新查询语句,在校验失败时输出异常提示。应用本技术方案,新的查询语句在语法校验成功时,进行展平输出,在语法校验失败时,输出异常提示,从而确保展平后语句的正确性。图I示出了根据本发明的实施例的查询语句优化装置框图;图2示出了根据本发明的实施例的查询语句优化方法的流程图;图3示出了根据本发明的实施例的查询语句优化的流程图;图4示出了根据本发明的实施例的查询语句优化模块框图5示出了根据本发明的实施例的SQL脚本对象化结构图;图6示出了根据本发明的实施例的SQL对象脚本化流程图。具体实施例方式为了能够更

9、清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。图I示出了根据本发明的实施例的查询语句优化装置框图。如图I所示,本发明的查询语句优化装置100包括查询定位模块102,获取所述原始查询语句中的外部查询和子查询;查询合并模块104,将所述外部查询和所述子查询合并为新外部查询;查询语句生成模块106,根据所述新外部查询,生成新查询语句。应用本技术方案,可以定位至查询语句中的外部查询和子查询,从而

10、将外部查询和子查询进行合并操作,去掉嵌套子查询,以实现展平、精简SQL语句的目的。在上述技术方案中,优选地,所述查询定位模块102从所述原始查询语句中检索特定字符串,并根据检索到的首个特定字符串获取所述外部查询,根据检索到的其他特定字符串确定所述子查询。应用本技术方案,根据检索到的特定字符串的不同,获取到外部查询和子查询。在上述技术方案中,优选地,还包括冗余字段过滤模块108,获取所述外部查询对应的第一查询字段和所述子查询对应的第二查询字段,过滤掉所述第二查询字段中未包含在所述第一查询字段中的字段,所述查询合并模块104还根据所述第一查询字段和经过滤后的所述第二查询字段,确定所述新外部查询对应

11、的查询字段,所述查询语句生成模块106根据所述新外部查询以及所述新外部查询的查询字段,生成所述新查询语句。应用本技术方案,通过脚本对象化、对象脚本化的操作,将原始的SQL语句加载到内存中进行处理,及将新的查询对象导出给优化的SQL语句。在上述技术方案中,优选地,还包括脚本对象化模块110,生成所述外部查询和所述子查询的对象,所述查询合并模块104将所述外部查询和所述子查询的对象合并为新外部查询的对象;对象脚本化模块112,根据所述新外部查询的对象处理生成脚本,所述查询语句生成模块106将所述脚本作为所述新查询语句。应用本技术方案,简化了SQL语句展平和过滤冗余字段的过程,使操作更加灵活、方便。

12、在上述技术方案中,优选地,还包括语法校验模块114,对所述新查询语句进行语法校验,并在校验成功时输出所述新查询语句,在校验失败时输出异常提示。应用本技术方案,新的查询语句在语法校验成功时,进行展平输出,在语法校验失败时,输出异常提示,从而确保展平后语句的正确性。图2示出了根据本发明的实施例的查询语句优化方法的流程图。如图2所示,本发明的查询语句优化方法包括步骤202,获取所述原始查询语句中的外部查询和子查询;步骤204,将所述外部查询和所述子查询合并为新外部查询;步骤206,根据所述新外部查询,生成新查询语句。应用本技术方案,可以定位至查询语句中的外部查询和子查询,从而将外部查询和子查询进行合

13、并操作,去掉嵌套子查询,以实现展平、精简SQL语句的目的。在上述技术方案中,优选地,所述步骤202包括从所述原始查询语句中检索特定字符串,并根据检索到的首个特定字符串获取所述外部查询,根据检索到的其他特定字符串确定所述子查询。应用本技术方案,根据检索到的特定字符串的不同,获取到外部查询和子查询。在上述技术方案中,优选地,还包括获取所述外部查询对应的第一查询字段和所述子查询对应的第二查询字段,过滤掉所述第二查询字段中未包含在所述第一查询字段中的字段;所述步骤204还包括根据所述第一查询字段和经过滤后的所述第二查询字段,确定所述新外部查询对应的查询字段;步骤206包括根据所述新外部查询以及所述新外

14、部查询的查询字段,生成所述新查询语句。应用本技术方案,对比外部查询和子查询的信息,可以将冗余字段过滤掉,生成精简的查询语句,从而提高SQL语句的执行效率。在上述技术方案中,优选地,所述步骤202还包括生成所述外部查询和所述子查询的对象;所述步骤204包括将所述外部查询和所述子查询的对象合并为新外部查询的对象;所述步骤206包括根据所述新外部查询的对象处理生成脚本,并将所述脚本作为所述新查询语句。应用本技术方案,通过脚本对象化、对象脚本化的操作,将原始的SQL语句加载到内存中进行处理,以及将新的查询对象导出给优化的SQL语句。在上述技术方案中,优选地,还包括对所述新查询语句进行语法校验,并在校验

15、成功时输出所述新查询语句,在校验失败时输出异常提示。应用本技术方案,新的查询语句在语法校验成功时,进行展平输出,在语法校验失败时,输出异常提示,从而确保展平后语句的正确性。图3示出了根据本发明的实施例的查询语句优化的流程图。如图3所示,本发明的查询语句优化的具体流程如下步骤302,加载原始SQL语句。步骤304,使用SQL解析器将原始SQL语句解析成SQL对象。通过SQL解析器,对复杂SQL语句进行解析,将SQL脚本,解析为SQL对象,之所以做脚本对象化的处理,是因为对象操作起来比字符串更加灵活和方便。步骤306,定位原始SQL语句中的子查询。定位SQL语句中的子查询,同样做对象化处理,方便后

16、续的操作。步骤308,过滤子查询中的冗余字段。根据外部查询的SQL对象和子查询的SQL对象,可以比较各个查询的字段信息,进而判断出哪些字段为冗余字段,冗余字段就是对查询结果没有任何影响的字段,这些字段没有必要出现在查询语句中,因此,为了提高SQL语句的执行效率,将冗余字段过滤掉。步骤310,将子查询与外部查询合并。把子查询和外部查询进行合并操作,这样就去掉了嵌套子查询。如果有多层嵌套,每一层都采取上面的方式对其进行处理。步骤312,使用SQL翻译器将SQL对象翻译成标准的SQL语句。步骤314,进行SQL语法校验。如果通过了校验,进入步骤318;如果没有通过校验,进入步骤316。步骤316,抛出异常。步骤318,生成展平后的SQL语句。为了能更好的理解该方案,这里以一个简单的例子作为辅助说明。例如有这样一条嵌套子查询的SQL语句selectt.a,t.b,t.cfrom(selecta,b,c,d,e,ffromt);经过SQL解析器解析后会生成一个Select对象,字段列表包含t.a,t.b,t.c,会生成From对象,里面包含子查询SubSelect

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号