Sql处理踩坑之通过join来框定数据范围
一.背景
最近发现一个大坑,一个分区事实表(天分区)关联一个时间表用于对时间范围内的分区数据进行统计,结果速度超慢,通过explain分析需要在where条件后面加上对分区的大致筛选范围才会有速度提升,看来Tez引擎并没有按照我们想象的那样根据join的表来筛选数据范围。
二.分析
1.查看没有where条件的大致执行计划,居然遍历的数据上亿条。
2.加上where条件,执行计划遍历的数据就到千万级别了。
三.总结
所以想通过join表来筛选数据范围是不靠谱的,最好就是在where里面大致筛选出数据范围,然后再关联时间维表统计周,月,年数据。