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.一种多表关联查询方法,包括:获取针对第一表格的第一查询语句;所述第一查询语句是对多表关联查询脚本进行解析得到的;获取针对第二表格的第二查询语句;所述第二查询语句是对所述多表关联查询脚本进行解析得到的;所述第一查询语句与所述第二查询语句中的查询条件具有相同的字段;估算所述第一查询语句的第一查询代价;估算所述第二查询语句的第二查询代价;比较所述第一查询代价与所述第二查询代价,确定最小查询代价;根据所述最小查询代价对应的查询语句进行查询,得到第一查询结果集;根据所述第一查询结果集,改写另外的查询语句;根据所述改写后的查询语句进行查询,得到第二查询结果集;根据所述第一查询结果集与所述第二查询结果集,得到关联查询结果集。
【技术特征摘要】
1.一种多表关联查询方法,包括:获取针对第一表格的第一查询语句;所述第一查询语句是对多表关联查询脚本进行解析得到的;获取针对第二表格的第二查询语句;所述第二查询语句是对所述多表关联查询脚本进行解析得到的;所述第一查询语句与所述第二查询语句中的查询条件具有相同的字段;估算所述第一查询语句的第一查询代价;估算所述第二查询语句的第二查询代价;比较所述第一查询代价与所述第二查询代价,确定最小查询代价;根据所述最小查询代价对应的查询语句进行查询,得到第一查询结果集;根据所述第一查询结果集,改写另外的查询语句;根据所述改写后的查询语句进行查询,得到第二查询结果集;根据所述第一查询结果集与所述第二查询结果集,得到关联查询结果集。2.如权利要求1所述的方法,所述根据所述第一查询结果集,改写另外的查询语句,具体包括:将所述另外的查询语句中的所述相同的字段,用所述第一查询结果集的值进行限定。3.如权利要求1所述的方法,所述估算所述第一查询语句的第一查询代价之前,还包括:判断所述第一表格的数据量是否大于预设阈值,得到第一判断结果;所述估算所述第一查询语句的第一查询代价,具体包括:当所述第一判断结果表示所述第一表格的数据量不大于所述预设阈值时,估算所述第一查询语句的第一查询代价。4.如权利要求3所述的方法,还包括:当所述第一判断结果表示所述第一表格的数据量大于所述预设阈值时,根据所述第一查询语句进行查询,得到第三查询结果集;根据所述第二查询语句进行查询,得到第四查询结果集;根据所述第三查询结果集与所述第四查询结果集,得到关联查询结果集。5.如权利要求1所述的方法,还包括:获取针对第三表格的第三查询语句;所述第三查询语句中的查询条件具有所述相同的字段;估算所述第三查询语句的第三查询代价;所述确定最小查询代价之后,所述根据所述最小查询代价对应的查询语句进行查询之前,还包括:比较所述第三查询代价与所述最小查询代价;若所述第三查询代价小于所述最小查询代价,则根据所述第三查询语句进行查询,得到第五查询结果集;根据所述第五查询结果集,改写所述最小查询代价对应的查询语句;所述根据所述最小查询代价对应的查询语句进行查询,具体包括:根据改写后的所述最小查询代价对应的查询语句进行查询。6.如权利要求1所述的方法,所述根据所述最小查询代价对应的查询语句进行查询之后,还包括:将所述最小查询代价对应的查询语句针对的表格的状态标记为已查询。7.如权利要求1所述的方法,所述根据所述改写后的查询语句进行查询之后,还包括:将所述改写后的查询语句针对的表格的状态标记为已查询。8.如权利要求1所述的方法,根据所述第一查询结果集与所述第二查询结果集,得到关联查询结果集,具体包括:将所述第一查询结果集与所述第二查询结果集进行外连接,得到连接后的查询结果集。9.如权利要求1所述的方法,所述获取针对第一表格的第一查询语句之前,还包括:获取多表关联查询脚本;解析所述脚本,得到所述第一查询语句与所述第二查询语句。10.一种多表关联查询装置,包括:第一查询语句获取模块,用于获取针对第一表格的第一查询语句;所述第一查询语句是对多表关联查询脚本进行解析得到的;第二查询语句获取模块,用于获取针对第二表格的第二查询语句;所述第二查询语句是对所述多表关联查询脚本进行解析得到的;所述第一查询语句与所述第二查询语句中的查询条件具有相同的字段;第一查询代价估算模块,用于估算所述第一查询语句的第一查询代价;第二查询代价估算模块,用于估算所述第二查询语句的第二查询代价;查询代价比较模块,用于比较所述第一查询代价与所述第二查询代价,确定最小查询代价;第一查询模块,用于根据所述最小查询代价对应的查询语句进行查询,得到第一查询结果集;...
【专利技术属性】
技术研发人员:马平,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛,KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。