一、JOIN 数据倾斜
1、空值问题
select t1.id
from table_a t1
left join table_b t2
on t1.id = t2.id
如果主表的关联字段 t1.id
存在过多的NULL值,那么可能会造成数据倾斜
解决办法如下 (将NULL赋 随机值)
select t1.id
from table_a t1
left join table_b t2
on nvl(t1.id, rand()) = t2.id
2、如果其中一个表数据量不大,可以用 map join 方式解决
select
/*+ MAPJOIN(t1)*/
t1.id
from table_a t1
left join table_b t2
on t1.id = t2.id
PS. map join 不起作用时,可参考文章