从SQL任务稳定性、性能方面考虑如下情况

  • 1.权限问题:在MaxCompute平台
    A厂数据开发平台
    SQL任务如果要引用外部project表需要先申请表字段权限,如果外部表新增字段,线上任务因为没有新字段权限导致任务运行失败。

  • 2.字段数不同问题:如果写表采用"insert … select * from table_x"的方式,如果table_x新增字段也会因为字段数不匹配导致任务失败。同样在使用union all语句时也会有这个问题。

  • 3.性能问题:select * 会读取所有字段增加开销。但是由于MaxCompute在生成执行计划的时候已经做优化了,未使用的字段不读到内存,这个写法实际不会导致性能变差。

    Select * 写法可以减少代码行数,让代码更简洁,将字段罗列出来能够更清晰展示需要使用到的字段,并且避免许多问题。
    如此粗暴的规范必然是经过许多血泪教训总结出来的。除非你非常明确这么写会产生什么影响,不然还是遵照规范来吧。
    你知道其它相关案例吗?欢迎评论补充。

下次我们聊聊JOIN,你知道怎么通过JOIN实现笛卡尔积吗?

(觉得写得不错就点个赞吧, 头条号: 风控数据开发-唔崎 欢迎关注)

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐