#大数据SQL技巧#为什么开发规范会禁止Select * 写法
Select * 为什么会被禁止使用
·
从SQL任务稳定性、性能方面考虑如下情况
-
1.权限问题:在MaxCompute平台
A厂数据开发平台
SQL任务如果要引用外部project表需要先申请表字段权限,如果外部表新增字段,线上任务因为没有新字段权限导致任务运行失败。 -
2.字段数不同问题:如果写表采用"insert … select * from table_x"的方式,如果table_x新增字段也会因为字段数不匹配导致任务失败。同样在使用union all语句时也会有这个问题。
-
3.性能问题:select * 会读取所有字段增加开销。但是由于MaxCompute在生成执行计划的时候已经做优化了,未使用的字段不读到内存,这个写法实际不会导致性能变差。
Select * 写法可以减少代码行数,让代码更简洁,将字段罗列出来能够更清晰展示需要使用到的字段,并且避免许多问题。
如此粗暴的规范必然是经过许多血泪教训总结出来的。除非你非常明确这么写会产生什么影响,不然还是遵照规范来吧。
你知道其它相关案例吗?欢迎评论补充。
下次我们聊聊JOIN,你知道怎么通过JOIN实现笛卡尔积吗?
(觉得写得不错就点个赞吧, 头条号: 风控数据开发-唔崎 欢迎关注)
更多推荐
所有评论(0)