首页> 中国专利> 半连接合并方法和半连接合并装置

半连接合并方法和半连接合并装置

摘要

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

著录项

  • 公开/公告号CN106777054A

    专利类型发明专利

  • 公开/公告日2017-05-31

    原文格式PDF

  • 申请/专利号CN201611131301.3

  • 发明设计人 余鹏;

    申请日2016-12-09

  • 分类号G06F17/30;

  • 代理机构北京友联知识产权代理事务所(普通合伙);

  • 代理人尚志峰

  • 地址 100192 北京市海淀区学清路8号(科技财富中心)A座11层南1区

  • 入库时间 2023-06-19 02:19:08

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-03-27

    授权

    授权

  • 2017-06-23

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20161209

    实质审查的生效

  • 2017-05-31

    公开

    公开

说明书

技术领域

本发明涉及数据库技术领域,具体而言,涉及一种半连接合并方法和一种半连接合并装置。

背景技术

在数据库处理SQL(Structured Query Language,结构化查询语言)语句的过程主要分为三个阶段:一、语法分析阶段,在这个阶段,数据库(数据仓库)将来自客户端的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语法分析树中查询匹配子查询的半连接;确定单元,用于若匹配所述子查询的半连接的语句和所述子查询的语句均是第一类型语句和第二类型语句的其中一种语句,则根据该种语句确定待合并的第一谓词表达式;判断单元,用于判断该种语句转化成的半连接和匹配所述子查询的半连接的类型是否相同;合并单元,用于若所述判断单元判定该种语句转化成的半连接和匹配所述子查询的半连接的类型相同,则将所述第一谓词表达式与匹配所述子查询的半连接中的过滤条件进行合并;以及所述合并单元还用于,若所述判断单元判定该种语句转化成的半连接和匹配所述子查询的半连接的类型不相同,则对所述第一谓词表达式进行取反,并将取反后的第一谓词表达式与匹配所述子查询的半连接中的过滤条件进行合并。

在该技术方案中,通过将第一谓词表达式与匹配子查询的半连接中的过滤条件进行合并,由于谓词表达式中的有半连接,因此,通过以上的合并可以将两个半连接合并成一个半连接来获得最优的查询计划。通过以上方案,一方面减少了半连接的数量,从而减少了参与连接的表的数量,因此在查询优化阶段搜索最优的表的访问路径时,会缩小搜索空间,进而减小生成最优访问路径的时间,最终能减少生成查询计划的时间。另一方面,可以得到一个更优化的查询计划,合并之后的半连接中的谓词表达式的选择率更加小,并且半连接的数量也会减少,这样在执行查询计划阶段,不但能减少对物理表的访问和减少相应的磁盘IO,而且还因为谓词表达式的合并,可以减少重复的谓词表达式的计算,从而大大节约了CPU的开销。

在上述技术方案中,优选地,所述查询单元包括:确定子单元,用于遍历所述SQL语法分析树,以确定所述SQL语法分析树中的半连接和所述子查询是否满足匹配条件;所述确定子单元还用于,若所述SQL语法分析树中的半连接和所述子查询满足所述匹配条件,则将所述SQL语法分析树中的满足所述匹配条件的半连接作为匹配所述子查询的半连接;其中,所述匹配条件包括:所述SQL语法分析树中的半连接的语句和所述子查询的语句均是所述第一类型语句或者所述第二类型语句、所述SQL语法分析树中的半连接的标识码和所述子查询的标识码相同以及与所述子查询关联的主查询的第二谓词表达式中所引用所述主查询的列和所述SQL语法分析树中的半连接的连接条件上引用的所述主查询的列相同。

在该技术方案中,通过遍历SQL语法分析树,以在SQL语法分析树中更加全面、准确地查询出与子查询满足匹配条件的半连接。

在上述任一技术方案中,优选地,所述半连接合并装置还包括:所述半连接合并装置还包括:获取单元,用于获取所述子查询的语法分析树中的多个关键字段;生成单元,用于根据所述多个关键字段,生成所述子查询的标识码。

在该技术方案中,通过子查询的语法分析树中的多个关键字段生成子查询的标识码,从而根据该子查询的标识码可以快速地在SQL语法分析树中查询出与子查询满足匹配条件的半连接。

在上述任一技术方案中,优选地,所述确定单元具体用于,若匹配所述子查询的半连接的语句和所述子查询的语句均是所述第一类型语句,则将所述第一类型语句中的过滤条件作为所述第一谓词表达式;若匹配所述子查询的半连接的语句和所述子查询的语句均是所述第二类型语句,则将所述第二类型语句中的过滤条件作为所述第一谓词表达式。

在上述任一技术方案中,优选地,所述半连接合并装置还包括:加入单元,用于若所述查询单元在所述SQL语法分析树中未查询到匹配所述子查询的半连接,则将所述子查询作为半连接加入到所述SQL语法分析树中;以及所述加入单元还用于,若匹配所述子查询的半连接的语句和所述子查询的语句均不是所述第一类型语句或者所述第二类型语句,则将所述子查询作为半连接加入到所述SQL语法分析树中。

在该技术方案中,在未查询到匹配子查询的半连接,或者匹配子查询的半连接的语句和子查询的语句均不是第一类型语句或者第二类型语句时,将子查询作为半连接加入到SQL语法分析树中,从而保证了半连接合并时的可靠性。

在上述任一技术方案中,优选地,所述第一类型语句包括:IN语句和/或ANY语句;所述第二类型语句包括:EXIST语句。

在该技术方案中,第一类型语句包括:IN语句和/或ANY语句,第二类型语句包括:EXIST语句,从而实现对IN语句、ANY语句和EXIST语句的半连接的合并。

通过本发明的技术方案,通过对半连接进行合并,以在查询优化阶段缩小搜索空间和在执行查询计划阶段减少访问物理表的次数和减少重复的谓词表达式的计算。

附图说明

图1示出了根据本发明的一个实施例的半连接合并方法的流程示意图;

图2示出了根据本发明的另一个实施例的半连接合并方法的流程示意图;

图3示出了根据本发明的一个实施例的半连接合并装置的结构示意图。

具体实施方式

为了可以更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。

图1示出了根据本发明的一个实施例的半连接合并方法的流程示意图。

如图1所示,根据本发明的一个实施例的半连接合并方法,包括:

步骤102,在SQL语法分析树中查询匹配子查询的半连接。

优选地,步骤102包括:遍历所述SQL语法分析树,以确定所述SQL语法分析树中的半连接和所述子查询是否满足匹配条件;若所述SQL语法分析树中的半连接和所述子查询满足所述匹配条件,则将所述SQL语法分析树中的满足所述匹配条件的半连接作为匹配所述子查询的半连接;其中,所述匹配条件包括:所述SQL语法分析树中的半连接的语句和所述子查询的语句均是第一类型语句或者第二类型语句、所述SQL语法分析树中的半连接的标识码和所述子查询的标识码相同以及与所述子查询关联的主查询的第二谓词表达式中所引用所述主查询的列和所述SQL语法分析树中的半连接的连接条件上引用的所述主查询的列相同。

通过遍历SQL语法分析树,以在SQL语法分析树中更加全面、准确地查询出与子查询满足匹配条件的半连接。

优选地,所述第一类型语句包括:IN语句和/或ANY语句;所述第二类型语句包括:EXIST语句。第一类型语句和第二类型语句中可能会含有可以转化成半连接的语法分析树。

优选地,在步骤102之前,半连接合并方法还包括:获取所述子查询的语法分析树中的多个关键字段;根据所述多个关键字段,生成所述子查询的标识码。

例如,将子查询的语法分析树中的多个关键字段合并成一个总字段;使用无符号的整形数(例如,64位的整形数)对总字段进行编码,以将总字段的编码作为子查询的标识码。

再例如,使用无符号的整形数(例如,64位的整形数),分别对子查询的语法分析树中的多个关键字段中的每个关键字段进行编码,将多个关键字段的编码进行合并,将合并得到的编码作为子查询的标识码。通过子查询的语法分析树中的多个关键字段生成子查询的标识码并存储在该子查询的语法分析树中,从而根据该子查询的标识码可以快速地在SQL语法分析树中查询出与子查询满足匹配条件的半连接。

步骤104,若匹配所述子查询的半连接的语句和所述子查询的语句均是第一类型语句和第二类型语句的其中一种语句,则根据该种语句确定待合并的第一谓词表达式。

优选地,步骤104包括:若匹配所述子查询的半连接的语句和所述子查询的语句均是所述第一类型语句,则将所述第一类型语句中的过滤条件作为所述第一谓词表达式;若匹配所述子查询的半连接的语句和所述子查询的语句均是所述第二类型语句,则将所述第二类型语句中的过滤条件作为所述第一谓词表达式。

优选地,半连接合并方法还包括:若在所述SQL语法分析树中未查询到匹配所述子查询的半连接,则将所述子查询作为半连接加入到所述SQL语法分析树中;以及若匹配所述子查询的半连接的语句和所述子查询的语句均不是所述第一类型语句或者所述第二类型语句,则将所述子查询作为半连接加入到所述SQL语法分析树中。

在未查询到匹配子查询的半连接,或者匹配子查询的半连接的语句和子查询的语句均不是第一类型语句或者第二类型语句时,将子查询作为半连接加入到SQL语法分析树中,从而保证了半连接合并时的可靠性。

步骤106,判断该种语句转化成的半连接和匹配所述子查询的半连接的类型是否相同,若判定该种语句转化成的半连接和匹配所述子查询的半连接的类型相同,则执行步骤108,若判定该种语句转化成的半连接和匹配所述子查询的半连接的类型不相同,则执行步骤110。

步骤108,将所述第一谓词表达式与匹配所述子查询的半连接中的过滤条件进行合并。

步骤110,对所述第一谓词表达式进行取反,并将取反后的第一谓词表达式与匹配所述子查询的半连接中的过滤条件进行合并。

其中,步骤110包括:通过为第一谓词表达式生成新的第一谓词表达式,该新的第一谓词表达式中的操作符是NOT,该新的第一谓词表达式即为取反后的第一谓词表达式。

在该技术方案中,通过将第一谓词表达式与匹配子查询的半连接中的过滤条件进行合并,由于谓词表达式中的有半连接,因此,通过以上的合并可以将两个半连接合并成一个半连接来获得最优的查询计划。通过以上方案,一方面减少了半连接的数量,从而减少了参与连接的表的数量,因此在查询优化阶段搜索最优的表的访问路径时,会缩小搜索空间,进而减小生成最优访问路径的时间,最终能减少生成查询计划的时间。另一方面,可以得到一个更优化的查询计划,合并之后的半连接中的谓词表达式的选择率更加小,并且半连接的数量也会减少,这样在执行查询计划阶段,不但能减少对物理表的访问和减少相应的磁盘IO,而且还因为谓词表达式的合并,可以减少重复的谓词表达式的计算,从而大大节约了CPU的开销。

图2示出了根据本发明的另一个实施例的半连接合并方法的流程示意图。

如图2所示,根据本发明的另一个实施例的半连接合并方法,包括:

步骤202,遍历SQL语法分析树的过滤条件,从该过滤条件中找出第一类型语句和第二类型语句。其中,第一类型语句包括:IN语句和/或ANY语句;第二类型语句包括:EXIST语句。

步骤204,为子查询生成标识码,并将子查询的标识码存储到子查询的语法分析树中。

步骤206,遍历SQL语法分析树,判断是否查询出匹配子查询的半连接,若判定查询出匹配子查询的半连接,则执行步骤208,若判定未查询出匹配子查询的半连接,则执行步骤210。

其中,匹配子查询的半连接和子查询满足以下的匹配条件:SQL语法分析树中的半连接的语句和子查询的语句均是第一类型语句或者第二类型语句、SQL语法分析树中的半连接的标识码和子查询的标识码相同以及与子查询关联的主查询的第二谓词表达式中所引用主查询的列和SQL语法分析树中的半连接的连接条件上引用的主查询的列相同。

步骤208,判断匹配子查询的半连接的语句和子查询的语句是否均是第一类型语句或者第二类型语句,若判定匹配子查询的半连接的语句和子查询的语句均是第一类型语句或者第二类型语句,则执行步骤212,若判定匹配子查询的半连接的语句和子查询的语句并不均是第一类型语句或者第二类型语句,则执行步骤210。

步骤210,将子查询作为半连接加入到SQL语法分析树中。

步骤212,判断匹配子查询的半连接的语句和子查询的语句是否均是第二类型语句,若判定匹配子查询的半连接的语句和子查询的语句均是第二类型语句,则执行步骤214,若判定匹配子查询的半连接的语句和子查询的语句均不是第二类型语句,说明匹配子查询的半连接的语句和子查询的语句均是第一类型语句,则执行步骤218。

步骤214,将第二类型语句中的过滤条件作为第一谓词表达式。

步骤216,判断第二类型语句转化成的半连接和匹配子查询的半连接的类型是否相同,若判定第二类型语句转化成的半连接和匹配子查询的半连接的类型相同,则执行步骤224,若判定第二类型语句转化成的半连接和匹配子查询的半连接的类型不相同,则执行步骤222。

步骤218,将第一类型语句中的过滤条件作为第一谓词表达式。

步骤220,判断第一类型语句转化成的半连接和匹配子查询的半连接的类型是否相同,若判定第一类型语句转化成的半连接和匹配子查询的半连接的类型相同,则执行步骤224,若判定第一类型语句转化成的半连接和匹配子查询的半连接的类型不相同,说明第一类型语句转化成的半连接为反半连接,则执行步骤222。

步骤222,对第一谓词表达式取反,取反后的第一谓词表达式的操作符是NOT。

步骤224,将第一谓词表达式与匹配子查询的半连接中的过滤条件合并。其中,若未对第一谓词表达式取反,则直接使用第一谓词表达式与匹配子查询的半连接中的过滤条件合并;若对第一谓词表达式取反,则使用取反后的第一谓词表达式与匹配子查询的半连接中的过滤条件合并。

另外,将第一谓词表达式与匹配子查询的半连接中的过滤条件合并得到的一个新的谓词表达式,该谓词表达式的操作符是AND。

图3示出了根据本发明的一个实施例的半连接合并装置的结构示意图。

如图3所示,根据本发明的一个实施例的半连接合并装置300,包括:查询单元302、确定单元304、判断单元306和合并单元308。

查询单元302,用于在SQL语法分析树中查询匹配子查询的半连接。

优选地,所述查询单元302包括:确定子单元3022,用于遍历所述SQL语法分析树,以确定所述SQL语法分析树中的半连接和所述子查询是否满足匹配条件;所述确定子单元3022还用于,若所述SQL语法分析树中的半连接和所述子查询满足所述匹配条件,则将所述SQL语法分析树中的满足所述匹配条件的半连接作为匹配所述子查询的半连接;其中,所述匹配条件包括:所述SQL语法分析树中的半连接的语句和所述子查询的语句均是第一类型语句或者第二类型语句、所述SQL语法分析树中的半连接的标识码和所述子查询的标识码相同以及与所述子查询关联的主查询的第二谓词表达式中所引用所述主查询的列和所述SQL语法分析树中的半连接的连接条件上引用的所述主查询的列相同。

通过遍历SQL语法分析树,以在SQL语法分析树中更加全面、准确地查询出与子查询满足匹配条件的半连接。

优选地,所述第一类型语句包括:IN语句和/或ANY语句;所述第二类型语句包括:EXIST语句。

确定单元304,用于若匹配所述子查询的半连接的语句和所述子查询的语句均是第一类型语句和第二类型语句的其中一种语句,则根据该种语句确定待合并的第一谓词表达式。

优选地,所述确定单元304具体用于,若匹配所述子查询的半连接的语句和所述子查询的语句均是所述第一类型语句,则将所述第一类型语句中的过滤条件作为所述第一谓词表达式;若匹配所述子查询的半连接的语句和所述子查询的语句均是所述第二类型语句,则将所述第二类型语句中的过滤条件作为所述第一谓词表达式。

判断单元306,用于判断该种语句转化成的半连接和匹配所述子查询的半连接的类型是否相同。

合并单元308,用于若所述判断单元306判定该种语句转化成的半连接和匹配所述子查询的半连接的类型相同,则将所述第一谓词表达式与匹配所述子查询的半连接中的过滤条件进行合并;以及所述合并单元308还用于,若所述判断单元306判定该种语句转化成的半连接和匹配所述子查询的半连接的类型不相同,则对所述第一谓词表达式进行取反,并将取反后的第一谓词表达式与匹配所述子查询的半连接中的过滤条件进行合并。

在该技术方案中,通过将第一谓词表达式与匹配子查询的半连接中的过滤条件进行合并,由于谓词表达式中的有半连接,因此,通过以上的合并可以将两个半连接合并成一个半连接来获得最优的查询计划。通过以上方案,一方面减少了半连接的数量,从而减少了参与连接的表的数量,因此在查询优化阶段搜索最优的表的访问路径时,会缩小搜索空间,进而减小生成最优访问路径的时间,最终能减少生成查询计划的时间。另一方面,可以得到一个更优化的查询计划,合并之后的半连接中的谓词表达式的选择率更加小,并且半连接的数量也会减少,这样在执行查询计划阶段,不但能减少对物理表的访问和减少相应的磁盘IO,而且还因为谓词表达式的合并,可以减少重复的谓词表达式的计算,从而大大节约了CPU的开销。

在上述技术方案中,优选地,半连接合并装置300还包括:获取单元310,用于获取所述子查询的语法分析树中的多个关键字段;生成单元312,用于根据所述多个关键字段,生成所述子查询的标识码。

例如,生成单元312可以将子查询的语法分析树中的多个关键字段合并成一个总字段;使用无符号的整形数(例如,64位的整形数)对总字段进行编码,以将总字段的编码作为子查询的标识码。

再例如,生成单元312也可以使用无符号的整形数(例如,64位的整形数),分别对子查询的语法分析树中的多个关键字段中的每个关键字段进行编码,再将多个关键字段的编码进行合并,以将合并得到的编码作为子查询的标识码。

通过子查询的语法分析树中的多个关键字段生成子查询的标识码并存储在该子查询的语法分析树中,从而根据该子查询的标识码可以快速地在SQL语法分析树中查询出与子查询满足匹配条件的半连接。

在上述任一技术方案中,优选地,半连接合并装置300还包括:加入单元314,用于若所述查询单元302在所述SQL语法分析树中未查询到匹配所述子查询的半连接,则将所述子查询作为半连接加入到所述SQL语法分析树中;以及所述加入单元314还用于,若匹配所述子查询的半连接的语句和所述子查询的语句均不是所述第一类型语句或者所述第二类型语句,则将所述子查询作为半连接加入到所述SQL语法分析树中。

在未查询到匹配子查询的半连接,或者匹配子查询的半连接的语句和子查询的语句均不是第一类型语句或者第二类型语句时,将子查询作为半连接加入到SQL语法分析树中,从而保证了半连接合并时的可靠性。

以上结合附图详细说明了本发明的技术方案,通过本发明的技术方案,通过对半连接进行合并,以在查询优化阶段缩小搜索空间和在执行查询计划阶段减少访问物理表的次数和减少重复的谓词表达式的计算。

在本发明中,术语“第一”、“第二”仅用于描述的目的,而不能理解为指示或暗示相对重要性;术语“多个”表示两个或两个以上。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号