这个数据量上,应该做的是hash join outer
分区对效率应该没什么帮助

解决方案 »

  1.   

    的确是hash join outer,为什么分区对效率没帮助呢?请问该怎么搞啊
      

  2.   

    针对这个语句来说,分不分区都会将整个表拿来做hash连接
    对于这样的大表,最好不要全表merge
    可以分批进行,配合分区比如a表有3个分区,DD_PARTITION_DATE  范围分别是date'2014-1-1' 到date'2014-1-31'、date'2014-2-1' 到 date'2014-2-28' 、date'2014-3-1'到date'2014-3-31'
    b表的DD_PARTITION_DATE  值也在这3个范围内。分3批来merge
    merge into a partition (p201301) t1
    using (select * from b where b.DD_PARTITION_DATE>= ........ and b.DD_PARTITION_DATE  <....) t2
    on (t1.DD_PARTITION_DATE  =t2.DD_PARTITION_DATE  )
    .................
    如果分区较多,可以写个存储过程来拼接执行