SAP HANA性能-与脚本视图结合使用时,过滤器降低至较低水平

2020-09-21 09:41发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我们将HANA计算视图用作我们企...

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

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


我们将HANA计算视图用作我们企业服务的一部分,以使用复杂的计算视图检索单个客户(数字)的数据。 我们的计算视图的最低级别由一系列脚本视图(约20个)组成,这些视图将客户编号转换为策略ID并过滤策略ID上的源数据。 源表可以具有数千万行。 此实现的目的是尽早减少数据量。 客户数量作为参数从我们的计算视图的最高层传播到最低层。 我们希望这种方法可能导致查询响应时间短(<1秒)。 现在,我们的响应时间更长:有时超过1分钟。

我们认为我们已将响应时间过长的主要原因确定为
•我们在计算视图中使用的某些过滤器在执行过程中被向下推送,甚至低于以下对客户编号/policy-id的过滤 脚本化视图。 这意味着在应用客户编号过滤之前,将过滤器应用于所有客户的数据。 这导致查询效率低下和运行时间长。 我们如何强制始终将过滤器应用到脚本视图中的过滤之上(即在对客户编号应用过滤之后)?
•计算视图使用相同的脚本视图以不同的方式使用 。 但是脚本视图的结果始终相同,因为参数"客户编号"始终具有相同的值。 查看执行计划,似乎脚本视图的每个USE都执行一次。 在执行树的底部,我们注意到(100+)比二十个叶子(即,我们拥有的脚本视图的数量)多得多。 我们如何强制重复使用脚本视图的结果(即每个脚本视图仅执行一次)?

1条回答
野沐沐
2020-09-21 10:31

嗨,

我们通过在每个脚本视图的开头放置" SEQUENTIAL EXECUTION"命令来解决第一个问题。 这迫使HANA以正确的顺序执行SQL,并在最低级别进行过滤。

使用全局临时表解决了第二个问题。

谢谢。




一周热门 更多>