优化源于痛点(┬_┬)
有没有痛点取决于业务场景的需求;有多痛取决于当前方案对业务的契合度
让我们从业务场景①、当前方案②切入,联立①②来推导当前痛点③吧!
话不多说,开始分析
①业务场景:
1.需要计算时间和空间都在一定范围内的数据对,数据来源可能有多种类型,人、车、码等
2.计算需要并行进行,每次计算一天的数据量,大约亿级
②当前方案:
按照时间、经度、纬度三个维度扩充27倍数据,然后join
③当前痛点:
1.27倍太大了,从执行计划上来看,是真的扩了27倍的数据,1亿的基础数据就会变成27亿,吃不消
那么问题来了,是否存在什么更合适的方案来解决这些痛点呢?
我想,是有的。
根据痛点③,反推我们的预期目标④;
根据目标④,尝试推导出优化思路⑤;
落地思路⑤,成为最终的优化方案⑥
④预期目标
1.拆分join流程,把三个维度拆成2+1,先用in逻辑过滤一部分数据,再扩充一次,再join
⑤优化思路
1.拆成9倍和3倍,先算经纬度,后算时间