连表数据统计
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