性能优化技巧:有序定位关联提速主子关联后的过滤

本文通过对比测试分析,展示了在主表或子表有过滤条件时,使用有序定位关联相对于常规有序归并算法在性能上的显著提升。通过减少不必要的数据读取,有序定位关联在大规模数据关联查询中展现出优越性。
摘要由CSDN通过智能技术生成

一、  问题背景与适用场景

 

在《性能优化技巧:有序归并》中我们验证了有序归并算法提高关联性能的效果,那么还有没有进一步提升的空间呢?能不能再减少数据的读取量从而再提速呢?

通常主子关联后还会再施加更多运算,比如过滤。有序归并算法将主子表先分别读出再做关联,当其中一个关联表被过滤后剩下记录少了很多时,另一个关联表也会有大量记录不能关联上,但做归并关联之前并不知道,仍然会将这些不可能关联上的数据读出,浪费了时间。

如果我们能根据被过滤表的主键去另一个表查找可被关联记录再来做关联,那样就能省去很多读取动作了。而由于组表是按键有序存放的,恰恰能使我们可以用键值高速定位记录,从而实现这个想法。

下面我们就做个测试,与常规有序归并对比一下,看看性能提升的效果,并在测试过程中进一步分析一下提速原理。

 

二、  测试环境

 

测试机有两个Intel2670 CPU,主频2.6G,共16核,内存128G,SSD固态硬盘。

采用TPCH标准生成的200G数据,主表是orders,子表是lineitem。两表中记录分别按O_ORDERKEY、L_ORDERKEY升序排列。因数据量比较大,单线程运行时间较长,所以使用4线程并行测试。

 

三、  主表有过滤

 

查询时对主表的过滤条件是O_TOTALPRICE>price,price是个参数,用来测试主表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值