SQL查询性能问题

2020-08-22 09:13发布

         点击此处--->   EasySAP.com群内免费提供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')。 "负责员工和请求者

此致

         点击此处--->   EasySAP.com群内免费提供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')。 "负责员工和请求者

此致

付费偷看设置
发送
7条回答
蓋茨
1楼 · 2020-08-22 10:03.采纳回答

有关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条件。

 SELECT a〜vbeln a〜erdat a〜audat a  〜auart a〜lifska〜faksk a〜netwr a〜waerk a〜vkorg a〜vtweg a〜objnr
 来自vbak AS a
 内联vbpa AS b
    ON b〜vbeln = a〜vbeln
   AND b〜posnr ='000000'
 进入表lit_vbak
 请在rt_dates中输入" er〜atder",确保该字段已被索引
   AND a〜auart IN pt_ordtype
   和b〜parvw IN('ZM','ZQ')。  "负责员工和请求者的员工
Doze时光
2楼-- · 2020-08-22 10:02

我并不是很了解这些表,但是您始终可以做一件事:在加入之前下推过滤。您可以通过将表b的过滤从

ZJXianG
3楼-- · 2020-08-22 10:00

关于VAKPA表-默认情况下,所有合作伙伴均未填充该表。配置(SPRO)中有一个选项可以为其他表填充该表

但是我怀疑您是否仍会遇到VBAK的问题,就像迈克尔指出的那样。

您始终可以使用ST05(SQL跟踪)查看数据库中的确切执行路径。在对任何性能问题进行故障排除时,我强烈建议您这样做。

d56caomao
4楼-- · 2020-08-22 10:07

通常, 要分析任何SQL性能问题,请查看执行计划(通过SQL跟踪ST05),如果需要帮助,请将其附加在此处。

四川大学会员
5楼-- · 2020-08-22 09:58

检查数据库中的索引VBAK〜ERD激活。

悻福寶寶
6楼-- · 2020-08-22 09:52

我已激活索引ERD 按照建议,现在我的查询执行时间不到4分钟。 谢谢大家的宝贵建议。

lukcy2020
7楼-- · 2020-08-22 09:47

您好,

这是从我的DEV系统获取的执行路径。 请在这里帮助我如何优化查询。

一周热门 更多>