1. 多表Join查询时将副表的条件写在ON之后,而不是写在WHERE之后。因为如果将副表的过滤条件写在Where后面,那么就会先全表关联,之后再过滤。
比如:
SELECT a.uid,b.* FROM t_user as a LEFT OUTER JOIN t_order as b ON a.uid=b.uid
WHERE a.dt="20170101" AND b.dt="20170101"
优化之后:
SELECT a.uid,b.* FROM t_user as a LEFT OUTER JOIN t_order as b ON a.uid=b.uid AND b.dt="20170101"
WHERE a.dt="20170101"
2. hive中的日期函数在mysql中可以使用date函数,在hive中得使用to_date函数。需要注意的是,日期格式必须是yyyy-mm-dd的格式,to_date('20171105')的结果是null
|