SQL查询性能问题

2020-08-22 09:13发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)尊敬的专家, 我有一个下面的S...

         点击此处--->   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条回答
蓋茨
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')。  "负责员工和请求者的员工

一周热门 更多>