map join 大表和小表的join

map join 的定义:

map join 适用于一个大表和一个或多个小表执行join操作的场景。整个join过程包含map、shuffle和reduce三个阶段。通常情况下,join操作在reduce阶段执行表连接。map join操作是在map阶段执行的,大量缩短了数据传输的时间,提升了系统资源的利用率,从而起到了优化作业的作用。并且map join会将指定的小表全部加载到执行join操作的程序的内存中,从而加快join的速度。

map join 的操作限制:

  • 指定的表只能是小表;

  • 表被加载到内存后占用的总内存不得超过512MB;

  • 最多支持指定128张小表;

map join 中 join 操作的限制:

  • left outer join 的左表必须是大表;

  • right outer join的右表必须是大表;

  • 不支持full outer join;

  • inner join的左表或右表均可以是大表;

使用方法:

  • map join语句必须使用/*+ mapjoin(<table_name>) */格式才会执行;

  • 引用小表或查询时,需要引用别名;

  • 支持小表为子查询;

  • 可以使用不等值连接或or连接多个条件。可以通过不写on语句而通过mapjoin on 1=1的形式,实现笛卡尔乘积的计算。例如 select /*+ mapjoin(a) */

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值