1. a join b on a.xx=b.xx and b的条件过滤: 优点:简单直接,可以直接在join语句中对表b进行条件过滤,减少了中间数据的传输和处理。 缺点:如果表b的条件过滤比较复杂,可能会导致查询性能下降,因为hive不支持在join语句中使用复杂的过滤条件。

  2. a join b on a.xx=b.xx where b的条件过滤: 优点:可以根据表b的条件过滤来减少中间数据的传输和处理,提高查询性能。 缺点:查询语句相对较长,可读性较差,不够简洁。

  3. a join (select * from b where b的条件过滤) on a.xx=b.xx: 优点:通过子查询的方式在表b上进行条件过滤,可以减少中间数据的传输和处理,提高查询性能。同时,可以将复杂的过滤条件放在子查询中,使得查询语句更简洁易读。 缺点:如果子查询的数据量较大,可能会导致性能下降。

综上所述,根据具体情况选择合适的方式进行表的条件过滤,权衡查询性能和查询语句的简洁性。

a join b on axx=bxx and b的条件过滤a join b on axx=bxx where b的条件过滤a join select from b where b的条件过滤 on axx=bxx以上三种sql在hive层面说下他们的优缺点

原文地址: http://www.cveoy.top/t/topic/iSbC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录