Z表更新​​-性能提示

2020-09-23 02:38发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我们需要更新许多Z表(其中一些非常大),并且会感谢任何性能提示(除了显而易见的"创建适当的索引")。

我们用伪代码表示的问题如下:

 LOOP直到eof。
   从ZDB001中选择单个记录k1,f1,f2,f3。
   NF1 = F1 * X。  NF2 = F2 * X。  NF3 = F3 * X。
   更新ZDB001设置F1 = NF1,F2 = NF2,F3 = NF3其中key = zdb001〜k1。
 ENDLOOP。

换句话说,循环遍历表,根据一个简单的公式更新一些(货币)列。 如我所见,瓶颈当然是在SELECT/UPDATE访问时间中。 例如,如果我正在使用Db2,我将创建一些SQL函数并运行一个庞大的UPDATE语句(在我们当前使用的SAP版本中,AFAIK无法做到这一点)。

有什么想法吗?

预先感谢

路易斯

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我们需要更新许多Z表(其中一些非常大),并且会感谢任何性能提示(除了显而易见的"创建适当的索引")。

我们用伪代码表示的问题如下:

 LOOP直到eof。
   从ZDB001中选择单个记录k1,f1,f2,f3。
   NF1 = F1 * X。  NF2 = F2 * X。  NF3 = F3 * X。
   更新ZDB001设置F1 = NF1,F2 = NF2,F3 = NF3其中key = zdb001〜k1。
 ENDLOOP。

换句话说,循环遍历表,根据一个简单的公式更新一些(货币)列。 如我所见,瓶颈当然是在SELECT/UPDATE访问时间中。 例如,如果我正在使用Db2,我将创建一些SQL函数并运行一个庞大的UPDATE语句(在我们当前使用的SAP版本中,AFAIK无法做到这一点)。

有什么想法吗?

预先感谢

路易斯

付费偷看设置
发送
2条回答
骆驼绵羊
1楼 · 2020-09-23 02:43.采纳回答

我不知道DB/2的dbsl是否像Oracle一样针对进行批量SQL更新进行了优化,但是值得尝试创建仅包含关键字段+您要更新的字段的可更新DDIC视图,以及 做一个:

从表itab修改updatableview。

当然,您不会为需要批量更新的每组字段创建一个可更新的视图,因此只有在性能测试表明有明显好处的情况下才应执行此操作。

CPLASF-自律
2楼-- · 2020-09-23 03:04

我认为这是可以接受的折衷方案。 在单次选择/更新(效率很低)和预加载巨大的Itab之间的一半。

再次感谢

路易斯

一周热门 更多>