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)执行查询计划阶段, ...
【技术保护点】
一种半连接合并方法,其特征在于,包括:在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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。