查询性能提升

2020-08-19 01:56发布

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

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


专家您好,

我有一个非常老的查询,需要在ECC中进行优化。 请帮助我。

选择区别
 vbak〜vbeln"销售单据编号vbak
 vbak〜kunnr"售出方vbak
 vbak〜auart"销售凭证类型
 vbap〜matnr"材料编号vbap
 vbap〜posnr"销售订单中的项目号vbap
 vbfa〜vbeln"交货编号
 vbfa〜posnn"交货中的项目编号
 vbfa〜rfmng"实际交付的数量(以销售单位为单位)
 vbap〜kwmeng"销售单位中的累计订单数量vbap
 vbak〜vdatu"要求的交货日期vbak
 vbkd〜bstkd"客户采购订单号
 vbap〜abgru"拒绝原因

 进入表gt_so

 来自vbak
 加入vbap ON vbak〜vbeln = vbap〜vbeln
 JOIN平均值ON vbap〜matnr =平均值〜matnr
 在vbak〜vbeln上加入vbkd = vbkd〜vbeln
 左外连接vbfa ON vbfa〜vbelv = vbap〜vbeln
 AND vbfa〜posnv = vbap〜posnr
 与vbfa〜vbtyp_n EQ gc_j

 在哪里vbak〜auart EQ gv_auart
 AND vbak〜vbeln输入s_vbeln
 AND vbak〜erdat IN s_erdat
 和s_vdatu中的vbak〜vdatu
 AND s_bstkd中的vbkd〜bstkd
 和s_matnr中的vbap〜matnr
 AND mean〜ean11在s_ean11中
 AND mean〜eantp IN s_eantp。

干杯

LLD

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

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


专家您好,

我有一个非常老的查询,需要在ECC中进行优化。 请帮助我。

选择区别
 vbak〜vbeln"销售单据编号vbak
 vbak〜kunnr"售出方vbak
 vbak〜auart"销售凭证类型
 vbap〜matnr"材料编号vbap
 vbap〜posnr"销售订单中的项目号vbap
 vbfa〜vbeln"交货编号
 vbfa〜posnn"交货中的项目编号
 vbfa〜rfmng"实际交付的数量(以销售单位为单位)
 vbap〜kwmeng"销售单位中的累计订单数量vbap
 vbak〜vdatu"要求的交货日期vbak
 vbkd〜bstkd"客户采购订单号
 vbap〜abgru"拒绝原因

 进入表gt_so

 来自vbak
 加入vbap ON vbak〜vbeln = vbap〜vbeln
 JOIN平均值ON vbap〜matnr =平均值〜matnr
 在vbak〜vbeln上加入vbkd = vbkd〜vbeln
 左外连接vbfa ON vbfa〜vbelv = vbap〜vbeln
 AND vbfa〜posnv = vbap〜posnr
 与vbfa〜vbtyp_n EQ gc_j

 在哪里vbak〜auart EQ gv_auart
 AND vbak〜vbeln输入s_vbeln
 AND vbak〜erdat IN s_erdat
 和s_vdatu中的vbak〜vdatu
 AND s_bstkd中的vbkd〜bstkd
 和s_matnr中的vbap〜matnr
 AND mean〜ean11在s_ean11中
 AND mean〜eantp IN s_eantp。

干杯

LLD

付费偷看设置
发送
5条回答
me_for_i
1楼-- · 2020-08-19 02:37
  1. 您的查询是由主键或至少是主键的开始部分联接的,所以这很好,没有一种更好的方法通过单个select和join语句联接它们
  2. < li>您的位置限制"到处都是",这就是为什么您会在几个用例中表现不佳,除非某些限制是强制性的。
    a)例如,如果VBAK-VBELN是 不是强制性的,您将需要通过其他辅助键进行访问,以实现索引搜索,并且不会以顺序搜索结束。
    b)如果VBAK-ERDAT是强制性的,则需要确保VBAK-Index" 在数据库上激活了"用于订单输入日期的ERD索引"(或在可能的情况下,将AUDAT与索引AUD或ERDAT一起使用)如果没有任何限制或其他限制是必需的,则需要确保所有 强制性的,将访问数据库表上的辅助键,很可能您将必须为所有限制创建扩展索引
    d)如果您 您在VBAP〜MATNR上没有活动索引,您要么必须创建/活动索引,要么将where要求从" vbap〜matnr IN s_matnr"切换为" mean〜matnr IN s_matnr"
  3. 通过使用ST05 SQL跟踪来分析需要"优化"的查询,在发送SQL语句之前先激活它,然后立即取消激活,查看跟踪,选择对象名称为" VBAK,VBAP,MEAN,VBKD,VBFA"的记录 单击"打开"(OPEN)操作并通过"解释"(Explain)按钮显示"执行计划",以更好地理解基于where和join条件执行SQL语句的方式。 有关如何解释执行计划的更多信息,请打开以下链接,尤其是查看提供的博客: https://wiki.scn.sap.com/wiki/display/ABAP/Explain+Plan
  4. 如果由于某种原因,SQL解释器无法优化连接,您 继续以顺序读取结束,您可能不得不考虑根据使用的选择选项为不同的限制条件创建不同的选择语句。 我认为,强迫用户使用导致索引值的条件,并让SQL解释器找出必要的优化联接就足够了。

发布使您受益最多的执行计划 现在麻烦了。 还请告诉我们,正在使用什么数据库,因为这会对执行计划的可用功能产生影响。

Tong__Ming
2楼-- · 2020-08-19 02:56

仅需了解。.

1。 这是报告程序吗? 并且您的数据量巨大吗?

2。 什么是全部Selection参数以及其中有多少是必需参数。

3。 如果您指定日期范围/销售订单范围-需要多少时间?

4。 查询完内部表gt_so后-您是否再次循环处理?

5。 只需在查询后放置一个断点-即可查看查询需要多少时间。

基于此-我们可以进一步分析以即兴进行。

ZJXianG
3楼-- · 2020-08-19 03:03

您好,Lalit

启用ST12跟踪并检查所有数据库和ABAP使用情况

请参阅SAP Note链接"如何使用ST12收集和分析跟踪"

https://launchpad.support.sap.com/#/notes/2436955

致谢

SS

95年老男孩
4楼-- · 2020-08-19 02:41

请提供查询的"执行计划"(例如,通过SQL跟踪)。

callcenter油条
5楼-- · 2020-08-19 03:00

Lalit D ,请继续关注您的公开问题。

  • 评论答案或您的问题是否还有未解决的问题。
  • 否则将答案标记为接受,如果它可以帮助您解决问题
  • 或发布您自己的答案并接受 如果您自己找到了另一个有用的解决方案
  • ,或者将您的问题重定向到另一个相关且对解决您的问题有用的问题
  • 最后,请关闭您的问题

一周热门 更多>