1.不当使用SET表
问题描述:建表不指定MULTISET关键字,默认SET表(不允许重复记录),如果建了SET表又未指定UPI ,则每次在插入数据时都会进行Duplicate row check操作消耗额外的系统资源
建议:建表时统一加上MULTISET关键字 如果需要保证表中没有重复记录,则可在设置PI时指定UNIQUE PRIMARY INDEX
2.PI设置不合理
问题描述:2张表的PI表设置不一致
建议:PI选取时首先考虑均匀分布不偏移,其次考虑使用过程中的关联及过滤情况
3.大数据量聚合与关联
问题描述:交易流水表有大量明细数据,取一年数据关联后再汇总的方式在关联阶段会消耗大量系统资源
建议:当遇到大量数据需汇总统计并且过程中还需关联其他表时,可以考虑先聚合减少数据量再关联的方式
方法:建临时表先做聚合,过滤条件后数据量约10亿,按日聚合约2000w,按月聚合约200w,根据应用原始逻辑,可按月先进行聚合
4.相似逻辑重复使用
问题描述:5段INSERT逻辑基本相同,只有部分过滤条件不同,分段拆入导致系统多次读取来源表数据,额外消耗了系统资源
建议:可以将条件合并,5段INSERT合并1段INSERT,然后通过CASE WHEN进行区分
5.同一张表的多次关联
问题描述:同一张表多次关联造成了系统资源的额外消耗
建议:表只需要关联一次,通过CASE WHEN的行转列方式获取最终结果
6.PI中带DATA_DT
问题描述:在主索引中加入数据日期字段会导致在关联等场景时更加容易出现重分布的情况,导致额外的系统资源消耗
建议:除非出现单日数据重复较多需要多加一个日期字段来避免偏移的情况,否则不建议在PI中加上DATA_DT字段,比较推荐的方式是将DATA_DT作为PPI使用
7.关联字段中有大量空值
问题描述:字段有大量空值,导致执行过程中产生了严重的偏移
建议:因空值的关联大多数情况下没有实际的业务含义,当关联字段中存在大量空值时,可以在关联时加上过滤条件来排除掉空值的关联
8.PPI字段逻辑处理
问题描述:使用PPI字段时如果进行了逻辑处理会导致获取数据时无法利用到PPI,造成全表扫描
建议:为了获取当月数据,保持PPI字段不加额外处理
9.不必要的排重
建议:
第一步:新建临时表取有多条记录的记录
第二步:直接插入唯一记录条数
第三步:有多条记录排重后插入
其他案例:冗余逻辑处理、导出目标列过多
————————————————
版权声明:本文为CSDN博主「wangtian_6」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_21413865/article/details/134817813