半连接合并方法和半连接合并装置制造方法及图纸

技术编号:15542636 阅读:288 留言:0更新日期:2017-06-05 11:30
本发明专利技术提出了一种半连接合并方法和半连接合并装置,其中,所述半连接合并方法包括:在SQL语法分析树中查询匹配子查询的半连接;若匹配子查询的半连接的语句和子查询的语句均是第一类型语句和第二类型语句的其中一种语句,则根据该种语句确定待合并的第一谓词表达式;判断该种语句转化成的半连接和匹配子查询的半连接的类型是否相同;若相同,则将第一谓词表达式与匹配子查询的半连接中的过滤条件进行合并;若不相同,则对第一谓词表达式进行取反,并将取反后的第一谓词表达式与匹配子查询的半连接中的过滤条件进行合并。通过本发明专利技术的技术方案,可以缩小搜索空间和减少访问物理表的次数和减少重复的谓词表达式的计算。

Half connection merging method and half connection merging device

The invention provides a semi join combination method and semi connecting device, among them, the semi join merging method including: SQL syntax analysis matching query semi join query tree; if the matching query statements and semi join query is one of the first type of statement and statement second types of statements, according to the first predicate expressions to determine the consolidated statement; determine the type of the statement into the semi join query matching and semi join is the same; if the same will be combined with the first filter predicate expression and matching subqueries in semi join; if not the same first, the predicate expression is adopted, and the anti filter conditions after the first predicate expression and matching query in semi join merge. By the technical proposal of the invention, the search space can be reduced and the number of accessing physical tables and the calculation of repeated predicate expressions can be reduced.

【技术实现步骤摘要】
半连接合并方法和半连接合并装置
本专利技术涉及数据库
,具体而言,涉及一种半连接合并方法和一种半连接合并装置。
技术介绍
在数据库处理SQL(StructuredQueryLanguage,结构化查询语言)语句的过程主要分为三个阶段:一、语法分析阶段,在这个阶段,数据库(数据仓库)将来自客户端的SQL语句,借助语法解析工具转换成数据库(数据仓库)可以识别的数据结构,即转换成语法分析树;二、查询优化阶段,在这个阶段,数据库(数据仓库)在词法语法分析树上施加各种优化的方法(也就是数据库中常见的查询改写),然后为参与连接的表计算出一条最优的访问路径,最终生成一个结构来表示最优的查询计划;三、执行查询计划阶段,执行最优的查询计划,最终获得结果。其中,在查询优化阶段,会对语法分析树进行各种优化。在这些优化策略中,有一项就是将IN语句或是EXIST语句改写成半连接语句并上拉。这样做的好处在于:将IN语句或EXIST语句改写成半连接之后,可以提供更多机会来发现代价更小的访问路径,最终获得更优的查询计划。目前的数据库(数据仓库)中提供的针对IN语句或EXIST语句的半连接优化,一个主要的问题是没有考虑到将半连接进行合并。在某些情况下,复杂的SQL语句中,是存在多个半连接合并的可能性的。而现在有的数据库(数据仓库)中,没有对半连接进行合并,这就会带来如下两点的缺陷:(1)在查询优化阶段,搜索访问路径时,一般采用了动态规划算法,该动态规划算法的复杂度与参与连接的表的数量成指数级关系,因此多一个表,就会增大若干倍的搜索空间,从而相应地增大搜索代价。(2)执行查询计划阶段,会增加访问物理表的次数以及增大重复的谓词表达式的计算,最终增大了磁盘的IO压力和CPU资源的消耗。因此,如何实现对半连接进行合并,以在查询优化阶段缩小搜索空间和在执行查询计划阶段减少访问物理表的次数和减少重复的谓词表达式的计算成为亟待解决的技术问题。
技术实现思路
为此,本专利技术的一个目的在于提出了一种半连接合并方法。本专利技术的另一个目的在于提出了一种半连接合并装置。为实现上述至少一个目的,根据本专利技术的第一方面的实施例,提出了一种半连接合并方法,包括:在SQL语法分析树中查询匹配子查询的半连接;若匹配所述子查询的半连接的语句和所述子查询的语句均是第一类型语句和第二类型语句的其中一种语句,则根据所述该种语句确定待合并的第一谓词表达式;判断该种语句转化成的半连接和匹配所述子查询的半连接的类型是否相同;若相同,则将所述第一谓词表达式与匹配所述子查询的半连接中的过滤条件进行合并;以及若不相同,则对所述第一谓词表达式进行取反,并将取反后的第一谓词表达式与匹配所述子查询的半连接中的过滤条件进行合并。在该技术方案中,通过将第一谓词表达式与匹配子查询的半连接中的过滤条件进行合并,由于谓词表达式中的有半连接,因此,通过以上的合并可以将两个半连接合并成一个半连接来获得最优的查询计划。通过以上方案,一方面减少了半连接的数量,从而减少了参与连接的表的数量,因此在查询优化阶段搜索最优的表的访问路径时,会缩小搜索空间,进而减小生成最优访问路径的时间,最终能减少生成查询计划的时间。另一方面,可以得到一个更优化的查询计划,合并之后的半连接中的谓词表达式的选择率更加小,并且半连接的数量也会减少,这样在执行查询计划阶段,不但能减少对物理表的访问和减少相应的磁盘IO,而且还因为谓词表达式的合并,可以减少重复的谓词表达式的计算,从而大大节约了CPU的开销。在上述技术方案中,优选地,所述在SQL语法分析树中查询匹配子查询的半连接的步骤,包括:遍历所述SQL语法分析树,以确定所述SQL语法分析树中的半连接和所述子查询是否满足匹配条件;若所述SQL语法分析树中的半连接和所述子查询满足所述匹配条件,则将所述SQL语法分析树中的满足所述匹配条件的半连接作为匹配所述子查询的半连接;其中,所述匹配条件包括:所述SQL语法分析树中的半连接的语句和所述子查询的语句均是所述第一类型语句或者所述第二类型语句、所述SQL语法分析树中的半连接的标识码和所述子查询的标识码相同以及与所述子查询关联的主查询的第二谓词表达式中所引用所述主查询的列和所述SQL语法分析树中的半连接的连接条件上引用的所述主查询的列相同。在该技术方案中,通过遍历SQL语法分析树,以在SQL语法分析树中更加全面、准确地查询出与子查询满足匹配条件的半连接。在上述任一技术方案中,优选地,所述在SQL语法分析树中查询匹配子查询的半连接的步骤之前,所述半连接合并方法还包括:获取所述子查询的语法分析树中的多个关键字段;根据所述多个关键字段,生成所述子查询的标识码。在该技术方案中,通过子查询的语法分析树中的多个关键字段生成子查询的标识码,从而根据该子查询的标识码可以快速地在SQL语法分析树中查询出与子查询满足匹配条件的半连接。在上述任一技术方案中,优选地,若匹配所述子查询的半连接的语句和所述子查询的语句均是第一类型语句和第二类型语句的其中一种语句,则根据该种语句确定待合并的第一谓词表达式的步骤,包括:若匹配所述子查询的半连接的语句和所述子查询的语句均是所述第一类型语句,则将所述第一类型语句中的过滤条件作为所述第一谓词表达式;若匹配所述子查询的半连接的语句和所述子查询的语句均是所述第二类型语句,则将所述第二类型语句中的过滤条件作为所述第一谓词表达式。在上述任一技术方案中,优选地,所述半连接合并方法还包括:若在所述SQL语法分析树中未查询到匹配所述子查询的半连接,则将所述子查询作为半连接加入到所述SQL语法分析树中;以及若匹配所述子查询的半连接的语句和所述子查询的语句均不是所述第一类型语句或者所述第二类型语句,则将所述子查询作为半连接加入到所述SQL语法分析树中。在该技术方案中,在未查询到匹配子查询的半连接,或者匹配子查询的半连接的语句和子查询的语句均不是第一类型语句或者第二类型语句时,将子查询作为半连接加入到SQL语法分析树中,从而保证了半连接合并时的可靠性。在上述任一技术方案中,优选地,所述第一类型语句包括:IN语句和/或ANY语句;所述第二类型语句包括:EXIST语句。在该技术方案中,第一类型语句包括:IN语句和/或ANY语句,第二类型语句包括:EXIST语句,从而实现对IN语句、ANY语句和EXIST语句的半连接的合并。本专利技术的第二方面提出了一种半连接合并装置,包括:查询单元,用于在SQL语法分析树中查询匹配子查询的半连接;确定单元,用于若匹配所述子查询的半连接的语句和所述子查询的语句均是第一类型语句和第二类型语句的其中一种语句,则根据该种语句确定待合并的第一谓词表达式;判断单元,用于判断该种语句转化成的半连接和匹配所述子查询的半连接的类型是否相同;合并单元,用于若所述判断单元判定该种语句转化成的半连接和匹配所述子查询的半连接的类型相同,则将所述第一谓词表达式与匹配所述子查询的半连接中的过滤条件进行合并;以及所述合并单元还用于,若所述判断单元判定该种语句转化成的半连接和匹配所述子查询的半连接的类型不相同,则对所述第一谓词表达式进行取反,并将取反后的第一谓词表达式与匹配所述子查询的半连接中的过滤条件进行合并。在该技术方案中,通过将第一谓词表达式与匹配子查询本文档来自技高网
...
半连接合并方法和半连接合并装置

【技术保护点】
一种半连接合并方法,其特征在于,包括:在SQL语法分析树中查询匹配子查询的半连接;若匹配所述子查询的半连接的语句和所述子查询的语句均是第一类型语句和第二类型语句的其中一种语句,则根据该种语句确定待合并的第一谓词表达式;判断该种语句转化成的半连接和匹配所述子查询的半连接的类型是否相同;若相同,则将所述第一谓词表达式与匹配所述子查询的半连接中的过滤条件进行合并;以及若不相同,则对所述第一谓词表达式进行取反,并将取反后的第一谓词表达式与匹配所述子查询的半连接中的过滤条件进行合并。

【技术特征摘要】
1.一种半连接合并方法,其特征在于,包括:在SQL语法分析树中查询匹配子查询的半连接;若匹配所述子查询的半连接的语句和所述子查询的语句均是第一类型语句和第二类型语句的其中一种语句,则根据该种语句确定待合并的第一谓词表达式;判断该种语句转化成的半连接和匹配所述子查询的半连接的类型是否相同;若相同,则将所述第一谓词表达式与匹配所述子查询的半连接中的过滤条件进行合并;以及若不相同,则对所述第一谓词表达式进行取反,并将取反后的第一谓词表达式与匹配所述子查询的半连接中的过滤条件进行合并。2.根据权利要求1所述的半连接合并方法,其特征在于,所述在SQL语法分析树中查询匹配子查询的半连接的步骤,包括:遍历所述SQL语法分析树,以确定所述SQL语法分析树中的半连接和所述子查询是否满足匹配条件;若所述SQL语法分析树中的半连接和所述子查询满足所述匹配条件,则将所述SQL语法分析树中的满足所述匹配条件的半连接作为匹配所述子查询的半连接;其中,所述匹配条件包括:所述SQL语法分析树中的半连接的语句和所述子查询的语句均是所述第一类型语句或者所述第二类型语句、所述SQL语法分析树中的半连接的标识码和所述子查询的标识码相同以及与所述子查询关联的主查询的第二谓词表达式中所引用所述主查询的列和所述SQL语法分析树中的半连接的连接条件上引用的所述主查询的列相同。3.根据权利要求2所述的半连接合并方法,其特征在于,所述在SQL语法分析树中查询匹配子查询的半连接的步骤之前,所述半连接合并方法还包括:获取所述子查询的语法分析树中的多个关键字段;根据所述多个关键字段,生成所述子查询的标识码。4.根据权利要求1至3中任一项所述的半连接合并方法,其特征在于,若匹配所述子查询的半连接的语句和所述子查询的语句均是第一类型语句和第二类型语句的其中一种语句,则根据该种语句确定待合并的第一谓词表达式的步骤,包括:若匹配所述子查询的半连接的语句和所述子查询的语句均是所述第一类型语句,则将所述第一类型语句中的过滤条件作为所述第一谓词表达式;若匹配所述子查询的半连接的语句和所述子查询的语句均是所述第二类型语句,则将所述第二类型语句中的过滤条件作为所述第一谓词表达式。5.根据权利要求1至3中任一项所述的半连接合并方法,其特征在于,所述半连接合并方法还包括:若在所述SQL语法分析树中未查询到匹配所述子查询的半连接,则将所述子查询作为半连接加入到所述SQL语法分析树中;以及若匹配所述子查询的半连接的语句和所述子查询的语句均不是所述第一类型语句或者所述第二类型语句,则将所述子查询作为半连接加入到所述SQL语法分析树中。6.根据权利要求1至3中任一项所述的半连接合并方法,其特征在于,所述第一类型语句包括:IN语句和/或ANY语句;所述第二类型语句包括:EXIST语句。7.一种半连接合并装置,其特征在于,包括:查询单元,...

【专利技术属性】
技术研发人员:余鹏
申请(专利权)人:北京华胜信泰数据技术有限公司华胜信泰信息产业发展有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1