[发明专利]一种非等值关联子查询的优化方法和系统有效
申请号: | 201810097136.7 | 申请日: | 2018-01-31 |
公开(公告)号: | CN108874849B | 公开(公告)日: | 2020-12-25 |
发明(设计)人: | 何文婷;程学旗;郑天祺;张志斌;郭嘉丰;赵鹏 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | G06F16/2453 | 分类号: | G06F16/2453 |
代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 祁建国;梁挥 |
地址: | 100080 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 等值 关联 查询 优化 方法 系统 | ||
本发明公开了一种非等值关联子查询的优化方法和系统,其特征在于,包括:获取关联子查询的外表关联列的取值集;根据该关联子查询中操作符的类型和该取值集,建立该关联子查询的外表关联列到内表关联列分区的映射关系;根据得到的分区集合,对该关联子查询的内表进行分区,同时依据该关联子查询中内表的查询聚合函数,获取关联子查询在各分区的中间结果状态信息;根据该映射关系,遍历该外表关联列,通过聚合对应的分区集的中间结果状态信息,得到外表中各关联列对应的子查询结果。本发明具有的技术效果包括:通过对内表进行分区,并重复利用各分区的中间结果从而得到最终的子查询结果集,以提升查询性能。
技术领域
本发明涉及数据库关系系统领域,特别涉及一种非等值关联子查询的优化方法和系统。
背景技术
子查询是指查询语句作为另一个语句的查询条件出现,关联子查询是指子查询的查询条件依赖于父查询。典型的非等值关联子查询如下:
select X.a,X.b from X where X.c
(select avg(Y.c)from Y where Y.d【OPERATOR】X.d)
其中关联子查询和外查询的关联列的操作符即上述【OPERATOR】包括:!=,,=,,=,in,not in,between and等。由于子查询用到外查询的结果,所以目前现有的实现技术包括以下三种实现方案:
1、tuple-at-a-time(nested iterator):从外表X中每得到一个d的值,传给子查询,再执行子查询得到子查询的结果。对于X.d中有重复值的情况,有以下两种方式来避免计算:一种是对外表列到子查询结果进行缓存,当有重复的外表关联列出现时则能缓存命中,从而避免计算;另一种方式是对外表关联列进行排序,以将相同值的外表列放在一起,一次性识别,该方法也能避免重复计算。若内表的关联列有索引时,能起到一定的加速作用。
2、semi join/anti join/outer join:将外表X和内表Y做笛卡尔积,从中筛选出满足关联条件的记录,再获得子查询对应的结果列。
3、sort-merge join:若OPERATOR为,=,,=且子查询的select列为max取最大值/min取最小值的聚合函数,那么可以先将外表和内表的关联列分别进行排序,再通过类似归并排序比较的方法得到子查询的结果,通过一些缓存策略可以实现部分结果的复用。例如子查询为select max(Y.c)from Y where Y.dX.d当X和Y表分别对d列进行降序排序,假设X.d的第k-1行已处理完时,Y.d处理到m行,内查询结果为maxk,则处理到X.d第k行时,其内查询结果为max(maxk,Y.d(m-n行)的max(Y.c))其中n行是Y.d中X.d第k行值最小的值所在的行数。
而以上现有技术均存在各自的问题:
第一种方法性能较差,虽然能避免相同值的外表列重复计算子查询,但是对于子查询的计算,不同值的外表列仍然需要全部扫描内表,则得到所有子查询结果的时间开销为外表关联列的不同值个数*扫描内表对比及最终计算的时间开销。而本发明由于利用了子查询的中间结果,只需要扫描一次内表即可,因此极大的提升了性能。
第二种方法同样存在1)中的问题。
第三种方法使用条件有限:首先内外表的关联条件只能为一个表达式,且类型只能为,=,,=四种,不支持集合操作in,not in,不支持beween and及不等于!=操作及多个表达式的组合例如Y.dX.d and Y.dX.d+10。其次子查询的查询列只支持max/min/sum/count。再者,该技术需要对内外表按照关联列进行排序,时间消耗大。而本发明支持的子查询关联操作符的种类多包括集合且支持多种比较操作符表达式的组合,更具有通用性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810097136.7/2.html,转载请声明来源钻瓜专利网。