点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
尊敬的专家,
我有一个下面的SQL查询,该查询执行了15至20分钟以上,我试图用VAKPA表替换VBPA,但是我在其中不涉及与合作伙伴" ZM"和" ZQ"相关的条目。 您能帮我如何优化下面的"选择查询"或任何其他方式来获取相似数据。 (日期范围RT_DATES为3个月)。
选择a〜vbeln a〜erdat a〜audat a〜auart a〜lifsk
a〜faksk a〜netwr a〜waerk a〜vkorg a〜vtweg a〜objnr
从vbak作为内部联接vbpa AS b
ON a〜vbeln = b〜vbeln
插入表lit_vbak
rt_dates中的a_erdat AND
pt_ordtype AND中的a〜auart AND
b〜posnr ='000000'AND < br> b〜parvw IN('ZM','ZQ')。 "负责员工和请求者
此致
有关VBAK的大性能问题:
您很可能没有在字段VBAK〜ERDAT上建立索引或索引无效(ERDAT-创建记录的日期)。
检查VBAK的索引并查找标准索引ERD。 在我们的系统中,它也不是在数据库上创建的。 相反,我们在字段AUDAT-文档日期(接收/发送日期)中使用AUD。
如果根据您的要求是ERDAT是强制性的,而不能使用AUDAT,请与您的组织一起检查是否可以在数据库上激活索引ERD。
(我说99%的两个日期应该相同, 如果不是这样,如果Idoc是在午夜之前发送的,而订单是在午夜之后创建的,则可能一天之内会有所不同,但是如果出现复制问题,差异可能会更大,但这应该是例外)。
我认为,在3个月的时间范围内,除非您在该时间范围内确实拥有"数百万"的记录,否则您将不必构建包含ERDAT/AUDAT以及AUART的另一个索引。 因此,有关VBAK的ERDAT/AUDAT索引应该工作良好。 旁注:MANDT不一定非要成为AUDAT或ERDAT的索引的一部分(除非您有多个具有大量数据的客户端),但是也不是"坏"的,它曾经是用于创建索引的标准SAP过程。/p>
关于VBPA的小性能问题:
您已经在join语句中拥有了VBPA密钥的第一部分,但是您也可以添加POSNR ='000000'。 这也将增加一点性能。 您不能将PARVW添加到join语句中,因为它不是直接的"等于"限制,因此它处于where条件。
我并不是很了解这些表,但是您始终可以做一件事:在加入之前下推过滤。您可以通过将表b的过滤从
关于VAKPA表-默认情况下,所有合作伙伴均未填充该表。配置(SPRO)中有一个选项可以为其他表填充该表
但是我怀疑您是否仍会遇到VBAK的问题,就像迈克尔指出的那样。
您始终可以使用ST05(SQL跟踪)查看数据库中的确切执行路径。在对任何性能问题进行故障排除时,我强烈建议您这样做。
通常, 要分析任何SQL性能问题,请查看执行计划(通过SQL跟踪ST05),如果需要帮助,请将其附加在此处。
检查数据库中的索引VBAK〜ERD激活。
我已激活索引ERD 按照建议,现在我的查询执行时间不到4分钟。 谢谢大家的宝贵建议。
您好,
这是从我的DEV系统获取的执行路径。 请在这里帮助我如何优化查询。
一周热门 更多>