连表数据统计

编程

hive上连表操作的查询,是通过map-reduce的方式执行的。正常情况下,hive应该会对每个JOIN操作启动一个map-reduce任务。

JOIN的操作也是从左到由执行的。一般来说,习惯将最大的数据表放在最后。因为,在对每行数据记录进行关联操作时,它会尝试将其它表缓存起来,然后扫描最后的表进行计算。

在执行JOIN的关键字on之后,是否可以跟过滤条件?对比下面两个查询

查询一

select * from topic_relation r join note on r.note_id = note.id and note.type = 1

查询二

select * from topic_relation r join note on r.note_id = note.id where note.type = 1

基本上SQL中都是先执行JOIN语句,然后再将结果通过where语句进行过滤。所以,我理解,这两个查询语句的执行效率是一样的。

还有感觉比较值得思考的,善用子查询。

以上是 连表数据统计 的全部内容, 来源链接: utcz.com/z/514371.html

回到顶部