不要用in, 要遍历很多遍, 导致file过多无法计算.
is Null 和 = Null
is Null 和 = Null 一点都不等价, 不可以用 = Null,要用 is Null。 不然就什么数据都被filter了
left join
left join 的时候, 左边2条, 右边两条, left join / inner join 之后可能会有4条的情况. 因此, 如果左右两张表有很多重复的pk, 笛卡儿积之后, 运算量会特别大, 计算可能会卡住无法run出结果. 与3结合使用.
比如:
不可以直接
inner join
on a.imsi = b.imsi
where a.id!= b.id
如果直接inner join, 原表只有3条数据,
1 a
1 b
1 c
join之后就会变成9条数据~~~!!!
如果有一个人换了三次机
那么就会出现3条记录
其中,a -> c其实不是换机信息,因为他们中间隔了b
这样的话
- 就错误的拉长了机器的使用周期
- 换机的机型数量也错误的扩大了
- 要用窗口函数