一种连接查询方法及装置制造方法及图纸

技术编号:10722444 阅读:52 留言:0更新日期:2014-12-03 23:55
本发明专利技术公开了一种连接查询方法及装置,包括:为至少两个子查询结果的每个行记录中的字段值,建立与字段名的映射关系,获得与所述至少两个子查询结果相应的至少两个行记录集合;获取至少两个行记录集合分别对应的关联字段名;针对至少两个行记录集合中的每个行记录,分别根据行记录所在行记录集合对应的关联字段名有映射关系的字段值,生成行记录的属性值;对至少两个行记录集合进行比较,判断是否有属性值相等的行记录;如果有属性值相等的行记录,将属性值相等的行记录拼接为一行记录,加入合并行记录集合;实现了在对子查询结果进行比较及合并时无特定格式要求,提高方案的扩展性的目的。

【技术实现步骤摘要】
一种连接查询方法及装置
本专利技术涉及数据库查询领域,特别涉及一种连接查询方法及装置。
技术介绍
在关系型数据库应用中,使用连接查询指令进行查询,可以将有关联的多张表中,关联字段的字段值相同的行连接起来,合并为一个结果输出。由于连接查询指令的一次查询是针对多张表进行的,如果其中一张或多张表的数据量比较多时,查询的速度会非常慢。为了解决这一问题,有些方案提出将连接查询分为多个子查询,以降低一次查询的数据量,提高查询速度。由于返回的子查询结果为表结构,特定含义的字段值被放在由特定含义的字段名统领的列中,对子查询结果中属于关联字段的字段值的操作,需要通过对关联字段所在列的操作实现,因此,为了便于将多个子查询结果中关联字段的字段值进行比较,这些方案对子查询结果的格式有特定要求,要求各个子查询结果中的关联字段的字段值被调整在固定列,通过对这些子查询的结果的固定列中的字段值进行比较,将固定列中字段值相同的行记录合并,实现获得连接查询的结果的目的。可见,由于这些方案对子查询结果存在特定格式要求,需要根据固定列中的字段值进行比较及合并,导致方案的扩展性较差。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供一种连接查询方法及装置以实现在对子查询结果进行比较及合并时无特定格式要求,进而提高方案的扩展性的目的。在本专利技术实施例的一个方面,提供了一种连接查询方法,该方法包括:为至少两个子查询结果的每个行记录中的字段值,建立与字段名的映射关系,获得与所述至少两个子查询结果相应的至少两个行记录集合;获取所述至少两个行记录集合分别对应的关联字段名;针对所述至少两个行记录集合中的每个行记录,分别根据行记录所在行记录集合对应的关联字段名有映射关系的字段值,生成行记录的属性值;对所述至少两个行记录集合进行比较,判断是否有属性值相等的行记录;如果有属性值相等的行记录,将属性值相等的行记录拼接为一行记录,加入合并行记录集合;如果还有属性值相等的行记录,返回到将属性值相等的行记录拼接为一行记录的步骤;如果没有,返回获得的合并行记录集合。在本专利技术实施例的另一个方面,提供了一种连接查询装置,该装置包括:子查询单元:用于为至少两个子查询结果的每个行记录中的字段值,建立与字段名的映射关系,获得与所述至少两个子查询结果相应的至少两个行记录集合;获取关联字段单元:用于获取所述至少两个行记录集合分别对应的关联字段名;属性生成单元:用于针对所述至少两个行记录集合中的每个行记录,分别根据行记录所在行记录集合对应的关联字段名有映射关系的字段值,生成行记录的属性值;比较单元:用于对所述至少两个行记录集合进行比较,判断是否有属性值相等的行记录;合并单元:用于如果有属性值相等的行记录,将属性值相等的行记录拼接为一行记录,加入合并行记录集合,判断是否还有属性值相等的行记录,如果有,触发合并单元重新执行,如果没有,触发返回单元执行;返回单元:用于返回获得的合并行记录集合。可见本专利技术具有如下有益效果:在本专利技术中,由于为至少两个子查询结果的每个行记录中的字段值均建立了与字段名的映射关系,因此,所获得的与至少两个子查询结果相应的至少两个行记录集合中的每个行记录都是字段值与字段名有映射关系的独立的记录,不存在固定的数据结构,为了能够对两个行记录集合进行连接,又获取指定的每个行记录集合各自对应的关联字段名,针对每个行记录集合中的每个行记录,分别根据行记录所在行记录集合对应的关联字段名有映射关系的字段值,即关联字段的字段值,生成每个行记录的属性值,因此,在进行比较及合并时,不存在特定格式要求,对于每个行记录来说,如果与关联字段名有映射关系的字段值相同,则行记录的属性值也相同,可以直接根据与关联字段名有映射关系的字段值所确定的行记录的属性值,对至少两个行记录集合中的行记录进行比较,将属性值相等的行记录进行连接,而且,所返回的合并行记录集合中的行记录,同样均为字段值与字段名有映射关系的独立记录,可以按照实际需要灵活指定最终合并行记录集合输出的格式,具有较强的扩展性。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本专利技术实施例的一种连接查询方法的流程示意图之一;图2是根据本专利技术实施例的一种连接查询方法的流程示意图之二;图3是根据本专利技术实施例的一种连接查询方法的流程示意图之三;图4是根据本专利技术实施例的一种连接查询装置的结构示意图。具体实施方式为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本专利技术实施例作进一步详细的说明。本专利技术实施例的连接查询方法,适用于关系型数据库的连接查询。下面,首先对关系型数据库进行简单介绍:在关系型数据库中,可以包含多个表,每个表中包含若干行记录,每行记录中包含若干字段值,特定含义的字段值放在由该特定含义的字段名统领的固定列中。表与表之间的关系,通过关联字段建立,例如,在某一关系型数据库中包含如下表一、表二和表三,表一、表二及表三的关系通过属于关联字段的字段名2A、字段名2B、字段名2C对应的相同字段值建立:表一:字段名1字段名2A字段名3字段值1.1字段值2.1字段值3.1字段值1.2字段值2.2字段值3.2表二:字段名2B字段名4字段名5字段值2.1字段值4.1字段值5.1字段值2.2字段值4.2字段值5.2表三:字段名2C字段名6字段名7字段值2.1字段值6.1字段值7.1字段值2.2字段值6.2字段值7.2在对表一、表二及表三进行连接查询时,位于表一中第二列的字段名2A为该表的关联字段名,位于表二与表三中第一列的字段名2B、字段名2C为关联字段名,该连接查询在拆分为两个或者三个子查询后,各个子查询返回的子查询结果中关联字段所在列也不同,若根据固定列的字段值对子查询结果进行合并,将涉及到多次对子查询结果的列数调整,且最终得到的连接查询的结果也为固定格式,扩展性较差,因此,需要一种对子查询结果没有格式要求的、可直接根据指定的关联字段的字段值进行比较及合并的连接查询方法,进而提高方案的可扩展性。有鉴于此,本专利技术提供如下连接查询的方法:参见图1所示,为本专利技术实施例提供的一种连接查询方法的流程示意图,如图所示,该方法可以包括:S101、为至少两个子查询结果的每个行记录中的字段值,建立与字段名的映射关系,获得与所述至少两个子查询结果相应的至少两个行记录集合;S102、获取所述至少两个行记录集合分别对应的关联字段名;S103、针对所述至少两个行记录集合中的每个行记录,分别根据该行记录所在行记录集合对应的关联字段名有映射关系的字段值,生成行记录的属性值;例如,可以将行记录中,与行记录所在行记录集合对应的关联字段名有映射关系的字段值做一定的编码后按照预定顺序连接,之间被特定分隔符如“$”分隔,生成行记录的属性值,当然,还可以预设其他生成方法,在本专利技术中并不进行限制,不过可以理解的是,不论预设何种生成方法,由于本专利技术限定的是根据行记录中,与行记录所在行记录集合对应的关联字段名有映射关系的字段值,生成行记录的属性值,因此,只本文档来自技高网...
一种连接查询方法及装置

【技术保护点】
一种连接查询方法,其特征在于,包括:为至少两个子查询结果的每个行记录中的字段值,建立与字段名的映射关系,获得与所述至少两个子查询结果相应的至少两个行记录集合;获取所述至少两个行记录集合分别对应的关联字段名;针对所述至少两个行记录集合中的每个行记录,分别根据行记录所在行记录集合对应的关联字段名有映射关系的字段值,生成行记录的属性值;对所述至少两个行记录集合进行比较,判断是否有属性值相等的行记录;如果有属性值相等的行记录,将属性值相等的行记录拼接为一行记录,加入合并行记录集合;如果还有属性值相等的行记录,返回到将属性值相等的行记录拼接为一行记录的步骤;如果没有,返回获得的合并行记录集合。

【技术特征摘要】
1.一种连接查询方法,其特征在于,包括:为至少两个子查询结果的每个行记录中的字段值,建立与字段名的映射关系,获得与所述至少两个子查询结果相应的至少两个行记录集合;获取所述至少两个行记录集合分别对应的关联字段名;针对所述至少两个行记录集合中的每个行记录,分别根据行记录所在行记录集合对应的关联字段名有映射关系的字段值,生成行记录的属性值;对所述至少两个行记录集合进行比较,判断是否有属性值相等的行记录;如果有属性值相等的行记录,将属性值相等的行记录拼接为一行记录,加入合并行记录集合;如果还有属性值相等的行记录,返回到将属性值相等的行记录拼接为一行记录的步骤;如果没有,返回获得的合并行记录集合。2.根据权利要求1所述的方法,其特征在于,还包括通过以下步骤获得所述至少两个子查询结果:获得需返回的字段名及查询条件;根据预先保存的信息配置表,查询需返回的字段名对应的表名、该表名对应的连接属性,其中,所述预先保存的信息配置表用于记录字段名,与字段名对应的表名,与表名对应的连接属性、其中,按照预设的关联条件,至少存在两个互相不关联的连接属性;按照互相关联的为一组、不关联的各自为单独一组的方式,将查询出的连接属性进行分组、且将需返回的字段名、及查询条件分到与之对应的连接属性的组中,获得与连接属性对应的至少两个查询组;针对每个查询组,根据查询指令生成规则,对应该查询组生成至少一条子查询指令;执行所述子查询指令,获得子查询结果。3.根据权利要求2所述的方法,其中所述根据查询指令生成规则,对应该查询组生成至少一条子查询指令包括:根据单表查询的查询指令生成规则,对应该查询组中的每个表名,各生成一条子查询指令;其中,所述单表查询的查询指令生成规则包括:该查询组中对应该表名的字段名作为该条子查询指令的被查询字段、且该查询组中对应该表名的字段名的查询条件作为该条子查询指令的查询条件,该表名为被查询的表。4.根据权利要求2所述的方法,其特征在于,其中所述根据查询指令生成规则,对应该查询组生成至少一条子查询指令包括:如果该查询组包含多个表名,根据多表查询指令生成规则生成一条子查询指令,如果该查询组包含一个表名,根据单表查询指令生成规则生成一条子查询指令;其中,所述多表查询的查询指令生成规则包括:该查询组包含的字段名,作为该条子查询指令的被查询字段;该查询组包含的查询条件,作为该条子查询指令的查询条件;该查询组包含的表名,作为该条子查询指令的被连接的表;该查询组包含的、且与该查询组对应的连接属性对应的、且属于关联字段的字段名,作为该条子查询指令的被连接的表的关联字段,其中,属于关联字段的字段名在信息配置表中有特定属性;所述单表查询的查询指令生成规则包括:该查询组包含的字段名,作为该条子查询指令的被查询字段;该查询组包含的查询条件,作为该条子查询指令的查询条件;该查询组包含的表名,作为该条子查询指令的被查询的表。5.根据权利要求2所述的方法,其特征在于,针对每个查询组,在所述根据查询指令生成规则,对应该查询组生成至少一条子查询指令之前,还包括:判断该查询组是否与缓存系统中的历史查询组相匹配,匹配条件为该查询组对应的连接属性与该历史查询组对应的连接属性互相关联、且该查询组包含的查询条件与该历史查询组包含的查询条件相同、且该查询组包含的字段名为该历史查询组包含的字段名的子集;如果匹配,从所述缓存系统中取出与该查询组匹配的历史查询组对应的行记录集合中与需返回的字段名有映射关系的字段值的集合,作为该查询组对应的行记录集合,进入所述获取至少两个行记录集合分别对应的关联字段名的步骤;如果不匹配,进入根据查询指令生成规则,对应该查询组生成至少一条子查询指令的步骤,且将生成该子查询指令的查询组与执行该子查询指令之后相应获得的行记录集合对应,并将该查询组对应的行记录集合保存于所述缓存系统。6.根据权利要求5所述的方法,其特征在于,所述如果匹配,从所述缓存系统中取出与该查询组匹配的历史查询组对应的行记录集合的具体实现为:如果匹配,且该历史查询组的缓存期限未过期,从所述缓存系统中取出该历史查询组对应的行记录集合中与需返回的字段名有映射关系的字段值的集合,作为该查询组对应的行记录集合,进入所述获取至少两个行记录集合分别对应的关联字段名的步骤;如果匹配,且该历史查询组的缓存期限已过期,进入根据查询指令生成规则,对应该查询组生成至少一条子查询指令的步骤,且将生成该子查询指令的查询组与执行该子查询指令之后相应获得的行记录集合对应,并将该查询组对应的行记录集合保存于所述缓存系统。7.根据权利要求2所述的方法,其特征在于,所述获取至少两个行记录集合分别对应的关联字段名的具体实现为:根据生成该子查询指令的查询组、及执行该子查询指令之后相应获得的行记录集合,确定每个行记录集合对应的查询组;针对每个行记录集合对应的查询组,查询出信息配置表中,与该查询组对应的连接属性对应、且与该查询组包含的表名对应、属于关联字段的字段名,以该属于关联字段的字段名作为该行记录集合对应的关联字段名,其中,属于关联字段的字段名在信息配置表中有特定属性。8.根据权利要求2所述的方法,其特征在于,所述需返回的字段名及查询条件从客户端获取;所述返回获得的合并行记录集合具体将所述获得的合并行记录集合返回到所述客户端。9.根据权利要求2所述的方法,其特征在于,所述获得至少两个查询组之后,还包括:为每个查询组各分配一个线程,所述线程用于执行获得该查询组对应的行记录集合之前的任意步骤,所述线程之间为并行执行。10.根据权利要求9所述的方法,其特征在于,所述线程一次读取表中的所有数据后,执行子查询指令进行查询;或者,所述线程分次读取表中的预设数量行记录,逐次执行子查询指令进行查询。11.根据权利要求2所述的方法,其特征在于,在所述根据查询指令生成规则,对应一个查询组生成至少一条子查询指令时,还将行记录数量之阈值作为子查询指令中用于限制返回行数的参数。12.根据权利要求2所述的方法,其特征在于,所述预设的关联条件为连接属性相同,所述互相不关联的连接属性为不相同的连接属性,所述互相关联的连接属性为相同的连接属性。13.根据权利要求1所述的方法,其特征在于,还包括:获取所述至少两个行记录集合各自的权重;按照权重大小,排序所述至少两个行记录集合的位置;所述如果有属性值相等的行记录,将属性值相等的行记录拼接为一行记录,加入合并行记录集合包括:如果有属性值相等的行记录,将在非第一位置的行记录集合中的所述属性值相等的行记录,按排序顺序拼接在第一位置的行记录集合中所述属性值相等的行记录的行尾成为一行,加入合并行记录集合。14.根据权利要求1或13所述的方法,其特征在于,还包括:如果所述至少两个行记录集合存在属性值不相等的行记录,将属性值不相等的行记录,作为新行记录插入到合并行记录集合的结尾。15.根据权利要求2所述的方法,其特征...

【专利技术属性】
技术研发人员:熊水林
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1