背景:生产环境中表a小表,b大表。a为报表范围;b分区表,且用b表全量数据,b表查询900g/天。
历史用a left join b,取b相关数据,随着b表数据量不断增加,某天跑批报错。只有2个表关联,查询不复杂。
优化过程:
1、直接加资源,刚开始一段时间有效果,后期数据增加报错。
2、后期除了加资源。
先a 表inner join b表取能关联到的数据,这步建表c;然后拿a表left join c表,优先取c表字段,取不到赋空处理。
inner join提高查询效率,a left join c保证数据范围。
3、同时参数设置广播小表a。
(explain sql语句,只有inner join生效广播小表,left join、right join有时候生效,有时候不生效,待查询原因。不知是是不版本问题)
步骤2、3提升明显。

9344

被折叠的 条评论
为什么被折叠?



