开发者社区 问答 正文

MaxCompute SQL中避免一些消耗资源的操作有哪些?

MaxCompute SQL中避免一些消耗资源的操作有哪些?

展开
收起
游客k7rjnht6hbtk6 2021-12-08 11:48:54 451 分享 版权
1 条回答
写回答
取消 提交回答
  • 1.少用distinct,容易触发数据倾斜

    2.count(distinct)处理的时间会很长可以转换成count()+ group by。因为如果原先只用count(distinct)来处理表的数据,只会开启一个reduce任务来完成所有的计算,而改成count/sum + group by后,除了count/sum会开启一个reduce计算之外,group by也会单独开启另一个reduce来计算,因此数据量大时可以明显提升查询速度。

    3.尽量避免Order by,order by会触发全局排序,只能单点运行,效率低,如果业务允许,可以改成distribute by + sort by

    4.将full outer join 改为left outer join + union all 并对小表使用上mapjoin。

    5.多个表join时,join顺序很重要,优先选择join结果输出小的表先关联,能有效减少中间数据量,节省IO和计算资源。

    6.读取相同源表时可以合并成一条sql,系统会优化只读取一次。

    2021-12-08 11:49:39
    赞同 展开评论