一种多表关联查询方法、装置及设备制造方法及图纸

技术编号:20916195 阅读:20 留言:0更新日期:2019-04-20 09:37
本说明书实施例公开了多表关联查询方法、装置及设备。方案包括:获取第一查询语句;获取第二查询语句;所述第一查询语句与所述第二查询语句中的查询条件具有相同的字段;估算所述第一查询语句的第一查询代价;估算所述第二查询语句的第二查询代价;确定最小查询代价;根据所述最小查询代价对应的查询语句进行查询,得到第一查询结果集;根据所述第一查询结果集,改写另外的查询语句;根据所述改写后的查询语句进行查询,得到第二查询结果集;根据所述第一查询结果集与所述第二查询结果集,得到关联查询结果集。

A Multi-table Association Query Method, Device and Equipment

The embodiment of this specification discloses a multi-table Association query method, device and device. The scheme includes: acquiring the first query statement; acquiring the second query statement; the first query statement has the same field as the query condition in the second query statement; estimating the first query cost of the first query statement; estimating the second query cost of the second query statement; determining the minimum query cost; and the query statement corresponding to the minimum query cost. The first query result set is obtained by querying, the other query statements are rewritten according to the first query result set, the second query result set is obtained by querying according to the rewritten query statement, and the related query result set is obtained according to the first query result set and the second query result set.

【技术实现步骤摘要】
一种多表关联查询方法、装置及设备
本申请涉及计算机
,尤其涉及一种多表关联查询方法、装置及设备。
技术介绍
现有技术中,用户的数据会以多张表的方式存储在数据库中。为了查询用户的某些行为,需要进行多表关联查询。多表关联查询,通常是指从多个数据表中查询具有某些共同属性的记录。例如,假设有表A、表B和表C三个数据表。其中,表A存储有用户编号和用户姓名,表B存储有用户编号和用户年龄,表C存储有用户编号和用户性别。每个用户具有一个唯一的编号。那么,如果要查询姓名为“张三”,年龄为20岁的男性,就需要根据这三个表进行多表关联查询,才能够得到查询结果。但是,现有的多表关联查询方法,通常是将多表关联查询脚本中涉及到的每个数据表的查询结果,分别获取到查询发起设备的内存中,再对每个数据表的查询结果进行过滤。这种方式进行多表查询,效率较低。
技术实现思路
有鉴于此,本申请实施例提供了一种多表关联查询方法、装置及设备,用于提高查询效率。为解决上述技术问题,本说明书实施例是这样实现的:本说明书实施例提供的一种多表关联查询方法,包括:获取针对第一表格的第一查询语句;所述第一查询语句是对多表关联查询脚本进行解析得到的;获取针对第二表格的第二查询语句;所述第二查询语句是对所述多表关联查询脚本进行解析得到的;所述第一查询语句与所述第二查询语句中的查询条件具有相同的字段;估算所述第一查询语句的第一查询代价;估算所述第二查询语句的第二查询代价;比较所述第一查询代价与所述第二查询代价,确定最小查询代价;根据所述最小查询代价对应的查询语句进行查询,得到第一查询结果集;根据所述第一查询结果集,改写另外的查询语句;根据所述改写后的查询语句进行查询,得到第二查询结果集;根据所述第一查询结果集与所述第二查询结果集,得到关联查询结果集。本说明书实施例提供的一种多表关联查询装置,包括:第一查询语句获取模块,用于获取针对第一表格的第一查询语句;所述第一查询语句是对多表关联查询脚本进行解析得到的;第二查询语句获取模块,用于获取针对第二表格的第二查询语句;所述第二查询语句是对所述多表关联查询脚本进行解析得到的;所述第一查询语句与所述第二查询语句中的查询条件具有相同的字段;第一查询代价估算模块,用于估算所述第一查询语句的第一查询代价;第二查询代价估算模块,用于估算所述第二查询语句的第二查询代价;查询代价比较模块,用于比较所述第一查询代价与所述第二查询代价,确定最小查询代价;第一查询模块,用于根据所述最小查询代价对应的查询语句进行查询,得到第一查询结果集;查询语句改写模块,用于根据所述第一查询结果集,改写另外的查询语句;第二查询模块,用于根据所述改写后的查询语句进行查询,得到第二查询结果集;关联结果生成模块,用于根据所述第一查询结果集与所述第二查询结果集,得到关联查询结果集。本说明书实施例提供的一种设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:获取针对第一表格的第一查询语句;所述第一查询语句是对多表关联查询脚本进行解析得到的;获取针对第二表格的第二查询语句;所述第二查询语句是对所述多表关联查询脚本进行解析得到的;所述第一查询语句与所述第二查询语句中的查询条件具有相同的字段;估算所述第一查询语句的第一查询代价;估算所述第二查询语句的第二查询代价;比较所述第一查询代价与所述第二查询代价,确定最小查询代价;根据所述最小查询代价对应的查询语句进行查询,得到第一查询结果集;根据所述第一查询结果集,改写另外的查询语句;根据所述改写后的查询语句进行查询,得到第二查询结果集;根据所述第一查询结果集与所述第二查询结果集,得到关联查询结果集。本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:通过对各个表格的查询代价进行估算,先执行查询代价较小的查询语句,再根据得到的查询结果集,对另外的查询语句进行改写,从而可以缩小另外的查询语句的查询范围,减小另外的查询语句的查询代价,进而提高多表关联查询的查询效率。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为本说明书实施例中多表关联查询方法的一种应用场景的示意图;图2为本说明书实施例提供的一种多表关联查询方法的流程示意图;图3为本说明书实施例提供的对应于图2的一种多表关联查询装置的结构示意图;图4为本说明书实施例提供的对应于图2的一种多表关联查询设备的结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。以下结合附图,详细说明本申请各实施例提供的技术方案。图1为本说明书实施例中多表关联查询方法的一种应用场景的示意图。如图1所示,工作站10与数据库11、数据库12、数据库13之间可通信连接。数据库11、数据库12与数据库13分别存储有大量的数据表。数据库11、数据库12与数据库13可以分别位于不同的地点。数据库11、数据库12与数据库13也可以是不同类型的数据库。当工作站10获取到多表关联查询脚本,并且脚本中涉及到的表分别位于数据库11、数据库12与数据库13中时,需要分别从数据库11、数据库12与数据库13获取相关的数据信息。图2为本说明书实施例提供的一种多表关联查询方法的流程示意图。从程序角度而言,流程的执行主体可以为搭载于应用服务器或工作站计算机的程序或应用客户端。如图2所示,该流程可以包括以下步骤:S201:获取针对第一表格的第一查询语句;所述第一查询语句是对多表关联查询脚本进行解析得到的;所述多表关联查询脚本,可以是采用SQL语句的脚本。本说明书实施例中的第一表格,可以是数据库中存储的数据表。可以采用开源软件对多表关联查询脚本解析,得到针对各个表格的查询语句。S202:获取针对第二表格的第二查询语句;所述第二查询语句是对所述多表关联查询脚本进行解析得到的;所述第一查询语句与所述第二查询语句中的查询条件具有相同的字段;例如,下面是一段简单的多表关联查询脚本:上面的一段脚本中,涉及表格a和表格b。可以采用开源软件对该脚本解析,得到针对表格a的查询语句,以及针对表格b的查询语句。针对表格a的查询语句可以是针对表格a的查询语句可以是可以看出,针对表格a的查询语句与针对表格b的查询语句中的查询条件具有相同的字段id。S203:估算所述第一查询语句的第一查询代价;查询代价,可以是指执行查询所消耗的时间或者占用的硬件资源的多少。本说明书实施例中,可以从查询结果的数据量的角度估算查询代价,也可以从数据表格中元数据的数据量的角度估算查询代价,还可以按照查询结果的数据量,内存的占用率,CPU的占用率三者综合考虑的方式估算查询代价。可以采用动态规划算法、遗传算法结合数据库元数据估算查询代价。S204:估算所述第二查询本文档来自技高网...

【技术保护点】
1.一种多表关联查询方法,包括:获取针对第一表格的第一查询语句;所述第一查询语句是对多表关联查询脚本进行解析得到的;获取针对第二表格的第二查询语句;所述第二查询语句是对所述多表关联查询脚本进行解析得到的;所述第一查询语句与所述第二查询语句中的查询条件具有相同的字段;估算所述第一查询语句的第一查询代价;估算所述第二查询语句的第二查询代价;比较所述第一查询代价与所述第二查询代价,确定最小查询代价;根据所述最小查询代价对应的查询语句进行查询,得到第一查询结果集;根据所述第一查询结果集,改写另外的查询语句;根据所述改写后的查询语句进行查询,得到第二查询结果集;根据所述第一查询结果集与所述第二查询结果集,得到关联查询结果集。

【技术特征摘要】
1.一种多表关联查询方法,包括:获取针对第一表格的第一查询语句;所述第一查询语句是对多表关联查询脚本进行解析得到的;获取针对第二表格的第二查询语句;所述第二查询语句是对所述多表关联查询脚本进行解析得到的;所述第一查询语句与所述第二查询语句中的查询条件具有相同的字段;估算所述第一查询语句的第一查询代价;估算所述第二查询语句的第二查询代价;比较所述第一查询代价与所述第二查询代价,确定最小查询代价;根据所述最小查询代价对应的查询语句进行查询,得到第一查询结果集;根据所述第一查询结果集,改写另外的查询语句;根据所述改写后的查询语句进行查询,得到第二查询结果集;根据所述第一查询结果集与所述第二查询结果集,得到关联查询结果集。2.如权利要求1所述的方法,所述根据所述第一查询结果集,改写另外的查询语句,具体包括:将所述另外的查询语句中的所述相同的字段,用所述第一查询结果集的值进行限定。3.如权利要求1所述的方法,所述估算所述第一查询语句的第一查询代价之前,还包括:判断所述第一表格的数据量是否大于预设阈值,得到第一判断结果;所述估算所述第一查询语句的第一查询代价,具体包括:当所述第一判断结果表示所述第一表格的数据量不大于所述预设阈值时,估算所述第一查询语句的第一查询代价。4.如权利要求3所述的方法,还包括:当所述第一判断结果表示所述第一表格的数据量大于所述预设阈值时,根据所述第一查询语句进行查询,得到第三查询结果集;根据所述第二查询语句进行查询,得到第四查询结果集;根据所述第三查询结果集与所述第四查询结果集,得到关联查询结果集。5.如权利要求1所述的方法,还包括:获取针对第三表格的第三查询语句;所述第三查询语句中的查询条件具有所述相同的字段;估算所述第三查询语句的第三查询代价;所述确定最小查询代价之后,所述根据所述最小查询代价对应的查询语句进行查询之前,还包括:比较所述第三查询代价与所述最小查询代价;若所述第三查询代价小于所述最小查询代价,则根据所述第三查询语句进行查询,得到第五查询结果集;根据所述第五查询结果集,改写所述最小查询代价对应的查询语句;所述根据所述最小查询代价对应的查询语句进行查询,具体包括:根据改写后的所述最小查询代价对应的查询语句进行查询。6.如权利要求1所述的方法,所述根据所述最小查询代价对应的查询语句进行查询之后,还包括:将所述最小查询代价对应的查询语句针对的表格的状态标记为已查询。7.如权利要求1所述的方法,所述根据所述改写后的查询语句进行查询之后,还包括:将所述改写后的查询语句针对的表格的状态标记为已查询。8.如权利要求1所述的方法,根据所述第一查询结果集与所述第二查询结果集,得到关联查询结果集,具体包括:将所述第一查询结果集与所述第二查询结果集进行外连接,得到连接后的查询结果集。9.如权利要求1所述的方法,所述获取针对第一表格的第一查询语句之前,还包括:获取多表关联查询脚本;解析所述脚本,得到所述第一查询语句与所述第二查询语句。10.一种多表关联查询装置,包括:第一查询语句获取模块,用于获取针对第一表格的第一查询语句;所述第一查询语句是对多表关联查询脚本进行解析得到的;第二查询语句获取模块,用于获取针对第二表格的第二查询语句;所述第二查询语句是对所述多表关联查询脚本进行解析得到的;所述第一查询语句与所述第二查询语句中的查询条件具有相同的字段;第一查询代价估算模块,用于估算所述第一查询语句的第一查询代价;第二查询代价估算模块,用于估算所述第二查询语句的第二查询代价;查询代价比较模块,用于比较所述第一查询代价与所述第二查询代价,确定最小查询代价;第一查询模块,用于根据所述最小查询代价对应的查询语句进行查询,得到第一查询结果集;...

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

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

1