hive多表查询的条件写在join里好还是用子查询
问题中这一块主要是和hive中 join 的谓词下推优化相关。
不同的hive版本,对谓词下推的优化程度不一样。
关于inner join: 不管是join中的谓词,还是join之后的谓词 都会进行下推。
另外,在left join, right join, full outer join 中,hive1.x与hive2.x 的版本 的优化效果也不一样。hive2.x的CBO做了更多优化。
这一块的细节很多,我写过两篇文章,很仔细的分析了谓词下推,分享一下,希望能对你有帮助:
从一个sql引发的hive谓词下推的全面复盘及源码分析(上)从一个sql引发的hive谓词下推的全面复盘及源码分析(下) 【hive多表查询的条件写在join里好还是用子查询】
■网友
一样的,谓词下推都会做的
■网友
分情况吧。
1、如果不存在数据倾斜,应该是第一种,从执行逻辑计划来看,这种方式会在reduce时候过滤掉不满足on 条件中的数据,而第二种方式在join之前会有一次数据读取处理过程,多一次磁盘IO过程,因此第一种方式时间短一些
2、若是join的两张表在关联时因笛卡儿积产生数据倾斜,第一种方式处理时间估计就比较久了,on条件过滤也是挽救不了,需要采取其他的方式进行优化
HQL编写时为了处理数据,在了解数据的基础上对语句优化更有方向
■网友
对比查询计划
■网友
第二种比较快
■网友
explain 对比两个语句的执行计划;
explain DEPENDENCY 对比两个语句的输入数据;
发现两个语句的执行计划和最终花费时间基本一样 因为优化器会做谓词下推,最终的执行速度是一样的
推荐阅读
- 是否有类似企查查的网站可以快速查询企业所属的行业,(根据《产业结构调整指导目录》(2011 年本))
- |天冷连云港用电量增 微信可查询电量阶梯余量
- chinaz、aizhan等工具是通过啥手段查询到ICP备案信息的
- 在某宝买的mbp13序列号查询少了半年保修期
- 咋查询佛山农用地征收信息
- 日语7月的能力考显示查询不到成绩
- 怎样通过数据库来管理大量EXCEL数据表,实现以表为单位对这些数据表的检索、查询、更新等功能
- 考生|2020年辽宁成人高考成绩查询及最低录取控制分数线!
- 宝马ETK怎样查询本地数据?
- 可实时查询的余额的『可视银行卡』怎样无线通信,有安全风险吗